{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Getting started with Captum - Titanic Data Analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook, we will demonstrate the basic features of the Captum interpretability library through an example model trained on the Titanic survival data. We will first train a deep neural network on the data using PyTorch and use Captum to understand which of the features were most important and how the network reached its prediction.\n",
    "  \n",
    "  **Note:** Before running this tutorial, please install the scipy, pandas, and matplotlib packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Initial imports\n",
    "import numpy as np\n",
    "\n",
    "import torch\n",
    "\n",
    "from captum.attr import IntegratedGradients\n",
    "from captum.attr import LayerConductance\n",
    "from captum.attr import NeuronConductance\n",
    "\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "from scipy import stats\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will begin by importing and cleaning the dataset. Download the dataset from https://hbiostat.org/data/repo/titanic3.csv and update the cell below with the path to the dataset csv."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Download dataset from: https://hbiostat.org/data/repo/titanic3.csv\n",
    "# Update path to dataset here.\n",
    "dataset_path = \"titanic3.csv\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Read dataset from csv file.\n",
    "titanic_data = pd.read_csv(dataset_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With the data loaded, we now preprocess the data by converting some categorical features such as gender, location of embarkation, and passenger class into one-hot encodings (separate feature columns for each class with 0 / 1). We also remove some features that are more difficult to analyze, such as name, and fill missing values in age and fare with the average values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data = pd.concat([titanic_data,\n",
    "                          pd.get_dummies(titanic_data['sex']),\n",
    "                          pd.get_dummies(titanic_data['embarked'],prefix=\"embark\"),\n",
    "                          pd.get_dummies(titanic_data['pclass'],prefix=\"class\")], axis=1)\n",
    "titanic_data[\"age\"] = titanic_data[\"age\"].fillna(titanic_data[\"age\"].mean())\n",
    "titanic_data[\"fare\"] = titanic_data[\"fare\"].fillna(titanic_data[\"fare\"].mean())\n",
    "titanic_data = titanic_data.drop(['name','ticket','cabin','boat','body','home.dest','sex','embarked','pclass'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After processing, the features we have are:\n",
    "\n",
    "* Age - Passenger Age\n",
    "* Sibsp - Number of Siblings / Spouses Aboard\n",
    "* Parch - Number of Parents / Children Aboard\n",
    "* Fare - Fare Amount Paid in British Pounds\n",
    "* Female - Binary variable indicating whether passenger is female\n",
    "* Male - Binary variable indicating whether passenger is male\n",
    "* EmbarkC - Binary variable indicating whether passenger embarked at Cherbourg\n",
    "* EmbarkQ - Binary variable indicating whether passenger embarked at Queenstown\n",
    "* EmbarkS - Binary variable indicating whether passenger embarked at Southampton\n",
    "* Class1 - Binary variable indicating whether passenger was in first class\n",
    "* Class2 - Binary variable indicating whether passenger was in second class\n",
    "* Class3 - Binary variable indicating whether passenger was in third class\n",
    "\n",
    "(Reference: http://campus.lakeforest.edu/frank/FILES/MLFfiles/Bio150/Titanic/TitanicMETA.pdf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now convert the data to numpy arrays and separate the training and test sets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set random seed for reproducibility.\n",
    "np.random.seed(131254)\n",
    "\n",
    "# Convert features and labels to numpy arrays.\n",
    "labels = titanic_data[\"survived\"].to_numpy()\n",
    "titanic_data = titanic_data.drop(['survived'], axis=1)\n",
    "feature_names = list(titanic_data.columns)\n",
    "data = titanic_data.to_numpy()\n",
    "\n",
    "# Separate training and test sets using \n",
    "train_indices = np.random.choice(len(labels), int(0.7*len(labels)), replace=False)\n",
    "test_indices = list(set(range(len(labels))) - set(train_indices))\n",
    "train_features = np.array(data[train_indices], dtype=float)\n",
    "train_labels = labels[train_indices]\n",
    "test_features = np.array(data[test_indices], dtype=float)\n",
    "test_labels = labels[test_indices]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to define the neural network architecture we will use for the task. We have defined a simple architecture using 2 hidden layers, the first with 12 hidden units and the second with 8 hidden units, each with Sigmoid non-linearity. The final layer performs a softmax operation and has 2 units, corresponding to the outputs of either survived (1) or not survived (0)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "torch.manual_seed(1)  # Set seed for reproducibility.\n",
    "class TitanicSimpleNNModel(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        self.linear1 = nn.Linear(12, 12)\n",
    "        self.sigmoid1 = nn.Sigmoid()\n",
    "        self.linear2 = nn.Linear(12, 8)\n",
    "        self.sigmoid2 = nn.Sigmoid()\n",
    "        self.linear3 = nn.Linear(8, 2)\n",
    "        self.softmax = nn.Softmax(dim=1)\n",
    "\n",
    "    def forward(self, x):\n",
    "        lin1_out = self.linear1(x)\n",
    "        sigmoid_out1 = self.sigmoid1(lin1_out)\n",
    "        sigmoid_out2 = self.sigmoid2(self.linear2(sigmoid_out1))\n",
    "        return self.softmax(self.linear3(sigmoid_out2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can either use a pretrained model or train the network using the training data for 200 epochs. Note that the results of later steps may not match if retraining. The pretrained model can be downloaded here: https://github.com/pytorch/captum/blob/master/tutorials/models/titanic_model.pt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Loaded!\n"
     ]
    }
   ],
   "source": [
    "net = TitanicSimpleNNModel()\n",
    "USE_PRETRAINED_MODEL = True\n",
    "\n",
    "if USE_PRETRAINED_MODEL:\n",
    "    net.load_state_dict(torch.load('models/titanic_model.pt'))\n",
    "    print(\"Model Loaded!\")\n",
    "    input_tensor = torch.from_numpy(train_features).type(torch.FloatTensor)\n",
    "    label_tensor = torch.from_numpy(train_labels)\n",
    "else:\n",
    "    criterion = nn.CrossEntropyLoss()\n",
    "    num_epochs = 200\n",
    "\n",
    "    optimizer = torch.optim.Adam(net.parameters(), lr=0.1)\n",
    "    input_tensor = torch.from_numpy(train_features).type(torch.FloatTensor)\n",
    "    label_tensor = torch.from_numpy(train_labels)\n",
    "    for epoch in range(num_epochs):    \n",
    "        output = net(input_tensor)\n",
    "        loss = criterion(output, label_tensor)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        if epoch % 20 == 0:\n",
    "            print ('Epoch {}/{} => Loss: {:.2f}'.format(epoch+1, num_epochs, loss.item()))\n",
    "\n",
    "    torch.save(net.state_dict(), 'models/titanic_model.pt')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now evaluate the training and test accuracies of our model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Accuracy: 0.8493449781659389\n"
     ]
    }
   ],
   "source": [
    "out_probs = net(input_tensor).detach().numpy()\n",
    "out_classes = np.argmax(out_probs, axis=1)\n",
    "print(\"Train Accuracy:\", sum(out_classes == train_labels) / len(train_labels))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy: 0.816793893129771\n"
     ]
    }
   ],
   "source": [
    "test_input_tensor = torch.from_numpy(test_features).type(torch.FloatTensor)\n",
    "out_probs = net(test_input_tensor).detach().numpy()\n",
    "out_classes = np.argmax(out_probs, axis=1)\n",
    "print(\"Test Accuracy:\", sum(out_classes == test_labels) / len(test_labels))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Beyond just considering the accuracy of the classifier, there are many important questions to understand how the model is working and its decision, which is the purpose of Captum, to help make neural networks in PyTorch more interpretable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The first question we can ask is which of the features were actually important to the model to reach this decision? This is the first main component of Captum, the ability to obtain **Feature Attributions**. For this example, we will apply Integrated Gradients, which is one of the Feature Attribution methods included in Captum. More information regarding Integrated Gradients can be found in the original paper here: https://arxiv.org/pdf/1703.01365.pdf."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To apply Integrated Gradients, we first create an IntegratedGradients object, providing the model object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "ig = IntegratedGradients(net)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To compute the Integrated Gradients, we use the attribute method of the IntegratedGradients object. The method takes tensor(s) of input examples (matching the forward function of the model), and returns the input attributions for the given examples. For a network with multiple outputs, a target index must also be provided, defining the index of the output for which gradients are computed. For this example, we provide target=1, corresponding to survival. \n",
    "\n",
    "The input tensor provided should require grad, so we call requires\\_grad\\_ on the tensor. The attribute method also takes a baseline, which is the starting point from which gradients are integrated. The default value is just the 0 tensor, which is a reasonable baseline / default for this task. \n",
    "\n",
    "The returned values of the attribute method are the attributions, which match the size of the given inputs, and delta, which approximates the error between the approximated integral and true integral."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_input_tensor.requires_grad_()\n",
    "attr, delta = ig.attribute(test_input_tensor,target=1, return_convergence_delta=True)\n",
    "attr = attr.detach().numpy()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand these attributions, we can first average them across all the inputs and print / visualize the average attribution for each feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average Feature Importances\n",
      "age :  -0.454\n",
      "sibsp :  -0.119\n",
      "parch :  -0.056\n",
      "fare :  0.175\n",
      "female :  0.154\n",
      "male :  -0.359\n",
      "embark_C :  0.086\n",
      "embark_Q :  -0.001\n",
      "embark_S :  -0.082\n",
      "class_1 :  0.062\n",
      "class_2 :  0.021\n",
      "class_3 :  -0.159\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+EAAAIhCAYAAAAhJrvmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABMNUlEQVR4nO3de3zP9f//8ft7Zgc7vJkx1GwOYTHnHKZCMYSOEj7mkGOSD+rj0EGioj4RHRAf8RGKUN9C+6SifHLIaSlEyVhlSGxSmO35+6Pf3h9v2942vJ8bbtfL5XXJ+/l+Pl+vx+v5fu+17nu93q+3wxhjBAAAAAAAvM6nsAsAAAAAAOBaQQgHAAAAAMASQjgAAAAAAJYQwgEAAAAAsIQQDgAAAACAJYRwAAAAAAAsIYQDAAAAAGAJIRwAAAAAAEsI4QAAAAAAWEIIBwAU2CuvvCKHw6FatWoVdilFTosWLeRwOHJdvv32W69sc+HChZoyZYpX1n2pxo4dK4fDoV9//bWwS7lo06ZN09y5cwu7DADAVcK3sAsAAFx53nzzTUnSjh07tHHjRjVu3LiQKypaKleurAULFuRor1Klile2t3DhQn377bcaOnSoV9Z/rZs2bZrCw8PVq1evwi4FAHAVIIQDAApk8+bN+vrrr9W+fXutWLFCs2fPth7CjTE6deqUAgMDrW43vwIDA9WkSZPCLuOS/fHHHypRokRhl1ForvX9BwB4B5ejAwAKZPbs2ZKkiRMnKi4uTu+8847++OMPSVJGRobKli2rhISEHOOOHz+uwMBADR8+3NWWnp6uxx57TJUqVZKfn5+uu+46DR06VCdPnnQb63A4NHjwYM2YMUMxMTHy9/fXv//9b0nSM888o8aNGyssLEyhoaGqX7++Zs+eLWOM2zpOnz6tRx99VOXKlVOJEiV06623asuWLYqOjs5xhjM1NVUDBgzQ9ddfLz8/P1WqVEnPPPOMzp49e8nzV5D9fv3113XrrbeqbNmyCgoKUmxsrF588UVlZGS4+rRo0UIrVqzQ/v373S59l6Q1a9bI4XBozZo1butNTk6Ww+Fwu8S6V69eCg4O1jfffKP4+HiFhITo9ttvlySdOXNGzz77rGrUqCF/f3+VKVNGvXv31pEjRy5q/1u0aKFatWpp/fr1iouLU2BgoKKjozVnzhxJ0ooVK1S/fn2VKFFCsbGxSkxMdBuffYn7tm3bdO+99yo0NFROp1Pdu3fPUVNWVpZefPFFV+1ly5ZVjx499NNPP+Va0xdffKG4uDiVKFFCDz74oKKjo7Vjxw59/vnnrrmNjo6WJJ06dUqPPvqo6tatK6fTqbCwMDVt2lT/93//l2Ofs9/Db731lmJiYlSiRAnVqVNHy5cvz9H3u+++U9euXRURESF/f39VrFhRPXr00OnTp1198vsenT59uurUqaPg4GCFhISoRo0aevzxx/P/YgEALjvOhAMA8u3PP//U22+/rZtuukm1atXSgw8+qL59++rdd99Vz549Vbx4cXXv3l0zZszQ66+/rtDQUNfYt99+W6dOnVLv3r0l/XWWsXnz5vrpp5/0+OOPq3bt2tqxY4fGjBmjb775Rp988okrTErS+++/r7Vr12rMmDEqV66cypYtK+mvQDlgwABVrFhRkrRhwwY98sgj+vnnnzVmzBjX+N69e2vRokUaMWKEbrvtNu3cuVP33HOP0tPT3fYxNTVVjRo1ko+Pj8aMGaMqVapo/fr1evbZZ5WcnOwKihdyfhjy8fGRj49PgfZ779696tatmyusf/3113ruuef03XffuT4SMG3aNPXv31979+7Ve++9l6/a8nLmzBndeeedGjBggEaNGqWzZ88qKytLd911l9auXasRI0YoLi5O+/fv19NPP60WLVpo8+bNF3VFQmpqqnr37q0RI0bo+uuv16uvvqoHH3xQKSkpWrJkiR5//HE5nU6NGzdOd999t3788UdVqFDBbR333HOPOnfurIEDB2rHjh166qmntHPnTm3cuFHFixeXJD300EOaOXOmBg8erA4dOig5OVlPPfWU1qxZo61btyo8PNy1voMHD6p79+4aMWKEnn/+efn4+GjkyJHq1KmTnE6npk2bJkny9/eX9Ncfdn777Tc99thjuu6663TmzBl98sknuvfeezVnzhz16NHDrd4VK1Zo06ZNGjdunIKDg/Xiiy/qnnvu0e7du1W5cmVJ0tdff62bb75Z4eHhGjdunG644QYdPHhQH3zwgc6cOSN/f/98v0ffeecdDRo0SI888oheeukl+fj46IcfftDOnTsL/HoBAC4jAwBAPs2bN89IMjNmzDDGGHPixAkTHBxsbrnlFlef7du3G0lm5syZbmMbNWpkGjRo4Ho8YcIE4+PjYzZt2uTWb8mSJUaSWblypatNknE6nea3337zWF9mZqbJyMgw48aNM6VLlzZZWVnGGGN27NhhJJmRI0e69X/77beNJNOzZ09X24ABA0xwcLDZv3+/W9+XXnrJSDI7duzwWEPz5s2NpBzL3/72twLvd277Nm/ePFOsWDG3uWjfvr2JiorKMWb16tVGklm9erVb+759+4wkM2fOHFdbz549jSTz5ptvuvXNnqOlS5e6tW/atMlIMtOmTfM4H08//bSRZI4cOeJqy56jzZs3u9qOHj1qihUrZgIDA83PP//sak9KSjKSzCuvvJJjncOGDXPb1oIFC4wkM3/+fGOMMbt27TKSzKBBg9z6bdy40Ugyjz/+eI6aPv300xz7ULNmTdO8eXOP+2mMMWfPnjUZGRmmT58+pl69em7PSTIREREmPT3d1Zaammp8fHzMhAkTXG233XabKVmypDl8+HCe28nve3Tw4MGmZMmSF6wbAGAXl6MDAPJt9uzZCgwMVJcuXSRJwcHBuv/++7V27Vp9//33kqTY2Fg1aNDA7Yzxrl279NVXX+nBBx90tS1fvly1atVS3bp1dfbsWdfSpk2bXC+hvu2221SqVKkcNX322Wdq1aqVnE6nihUrpuLFi2vMmDE6evSoDh8+LEn6/PPPJUmdO3d2G9upUyf5+rpfFLZ8+XK1bNlSFSpUcKurXbt2buvypEqVKtq0aZPbMn78+ALv97Zt23TnnXeqdOnSrn3r0aOHMjMztWfPngvWcTHuu+8+t8fLly9XyZIl1bFjR7d669atq3LlyuV4nfKrfPnyatCggetxWFiYypYtq7p167qd8Y6JiZEk7d+/P8c6/va3v7k97ty5s3x9fbV69WpJcv33/I8bNGrUSDExMfr000/d2kuVKqXbbrutQPvx7rvvqlmzZgoODpavr6+KFy+u2bNna9euXTn6tmzZUiEhIa7HERERKlu2rGvf/vjjD33++efq3LmzypQpk+c28/sebdSokY4fP66uXbvq//7v/67oO9QDwNWEEA4AyJcffvhBX3zxhdq3by9jjI4fP67jx4+rU6dOkv53x3RJevDBB7V+/Xp99913kqQ5c+bI399fXbt2dfU5dOiQtm/fruLFi7stISEhMsbkCAzly5fPUdNXX32l+Ph4SdKsWbP05ZdfatOmTXriiSck/XX5vCQdPXpU0l+h51y+vr4qXbq0W9uhQ4f04Ycf5qirZs2akpSvIBMQEKCGDRu6LZUqVSrQfh84cEC33HKLfv75Z02dOlVr167Vpk2b9Prrr7vt2+VUokQJt48QZNd7/Phx+fn55ag5NTX1ooNdWFhYjjY/P78c7X5+fpL++vz1+cqVK+f2OPv1zH69s/+b23unQoUKruez5dbPk2XLlqlz58667rrrNH/+fK1fv16bNm3Sgw8+mGu957/XpL8ubc9+LY8dO6bMzExdf/31Hreb3/doQkKC3nzzTe3fv1/33XefypYtq8aNG2vVqlUF2k8AwOXFZ8IBAPny5ptvyhijJUuWaMmSJTme//e//61nn31WxYoVU9euXTV8+HDNnTtXzz33nN566y3dfffdbmeyw8PDFRgY6Bbez3XuZ3UluX0+PNs777yj4sWLa/ny5QoICHC1v//++279ssPPoUOHdN1117naz549myOIhYeHq3bt2nruuedyrev8zyUXVH73+/3339fJkye1bNkyRUVFuZ5PSkrK97ay5+TcG3pJef8hIbc5Dg8PV+nSpXPcHC3buWd2bUtNTc319cx+vbP/e/DgwRzB9pdffsnXe8yT+fPnq1KlSlq0aJHb2PPnO7/CwsJUrFixHDeNO19B3qO9e/dW7969dfLkSX3xxRd6+umn1aFDB+3Zs8ftfQUAsIcQDgC4oMzMTP373/9WlSpV9K9//SvH88uXL9ekSZP00UcfqUOHDipVqpTuvvtuzZs3T02bNlVqaqrbpeiS1KFDBz3//PMqXbq06yxxQTkcDvn6+qpYsWKutj///FNvvfWWW79bb71VkrRo0SLVr1/f1b5kyZIcN1Dr0KGDVq5cqSpVquR6+fulyu9+Z4e67JuASX99NdusWbNy9D33bOq5su/ivX37drVp08bV/sEHHxSo3nfeeUeZmZlF7vvgFyxY4HZJ++LFi3X27Fm1aNFCklyXls+fP1833XSTq9+mTZu0a9cu1xUTF5LX/DocDvn5+bkF8NTU1Fzvjp4fgYGBat68ud59910999xzOf5IkO1i3qNBQUFq166dzpw5o7vvvls7duwghANAISGEAwAu6KOPPtIvv/yiF154wRVwzlWrVi299tprmj17tjp06CDpr0vSFy1apMGDB+v6669Xq1at3MYMHTpUS5cu1a233qphw4apdu3aysrK0oEDB/Txxx/r0UcfvWDo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tFq1aqWTJ0/melnn2bNnNXjwYNe8Pfnkkzr3G/umTZumG264QQEBAYqIiFCnTp1cz7Vo0UKDBw/2OL6ouFCt8+fPV8OGDRUSEqJy5cqpW7duOnz4sGv8mjVr5HA49J///EcNGzaUv7+/1q5dq6ysLL3wwguqWrWq/P39VbFiRT333HNu2/7xxx/VsmVLlShRQnXq1NH69eut7vvF6tWrlx555BEdOHBADodD0dHRF/w5y768a/HixWrRooUCAgI0f/58SdKcOXMUExOjgIAA1ahRQ9OmTSusXctTbvtsjNGLL76oypUrKzAwUHXq1NGSJUtcY859b9SrV0+BgYG67bbbdPjwYX300UeKiYlRaGiounbt6nYW8UJzmZuifoxq0aKFHnnkEQ0dOlSlSpVSRESEZs6cqZMnT6p3794KCQlRlSpV9NFHH0n6639c+/Tpo0qVKikwMFDVq1fX1KlTPW7jQq+HN3ja5sW+/tKFj78Xe1w63759+1S1alU99NBDysrK8rivixcv1oIFC/T222/r8ccf10033aTo6Gjddddd+uyzz9SyZctrem6WLFmiefPmqW/fvqpUqZLq1KmjmTNn6s4771Tfvn118uTJHOOupTn68MMP1blzZ/Xp00dVq1ZVzZo11bVrV40fP97juAvJz+9aKX/HlDVr1qhRo0auM/XNmjXT/v37JUlff/21WrZsqZCQEIWGhqpBgwbavHnzBesLCgrS9OnT1a9fP5UrV+6S9vViFPX5efzxxzV+/HjFxcWpSpUqGjJkiNq2bav33nvv8kyAB0V9bipXrqzevXurTp06ioqK0p133qm//e1vuf4sXpUMrnhLliwxS5cuNXv27DHbtm0zHTt2NLGxsSYzM9Okp6ebsLAw0717d7Njxw6zcuVKU61aNSPJbNu2zRhjzC+//GLCw8PN6NGjza5du8zWrVtN69atTcuWLQt3xwrol19+Mb6+vmby5Mlm3759Zvv27eb11183J06cMD179jR33XWXq2/z5s1NcHCw+fvf/26+++47M3/+fFOiRAkzc+ZMY4wxmzZtMsWKFTMLFy40ycnJZuvWrWbq1Kn5Hl+UXKjW2bNnm5UrV5q9e/ea9evXmyZNmph27dq5xq9evdpIMrVr1zYff/yx+eGHH8yvv/5qRowYYUqVKmXmzp1rfvjhB7N27Voza9YsY4wx+/btM5JMjRo1zPLly83u3btNp06dTFRUlMnIyCiUeSiI48ePm3Hjxpnrr7/eHDx40Bw+fNjjz5kx/9vn6Ohos3TpUvPjjz+an3/+2cycOdOUL1/e1bZ06VITFhZm5s6dW8h76S63fX788cdNjRo1TGJiotm7d6+ZM2eO8ff3N2vWrDHG/O+90aRJE/Pf//7XbN261VStWtU0b97cxMfHm61bt5ovvvjClC5d2kycONG1rfzO5ZV0jGrevLkJCQkx48ePN3v27DHjx483Pj4+pl27dmbmzJlmz5495qGHHjKlS5c2J0+eNGfOnDFjxowxX331lfnxxx9dP5eLFi1yrfP849aFXg9v8LTNi33983P8vNjj0tNPP23q1KljjDHmm2++MeXLlzejRo3K177eeeedpnr16sxNHnNTrVq1XJ/78ssvjSTz3nvvXdNzNGDAAFOjRg2TnJycr/75ldfv2vOPkxc6pmRkZBin02kee+wx88MPP5idO3eauXPnmv379xtjjKlZs6bp3r272bVrl9mzZ49ZvHixSUpKKlCt5x+zbLiS5idbs2bNzKOPPnpZ9t+TK21uvv/+exMTE2OeeOKJyzYHRRkh/Cp0+PBhI8l88803Zvr06aZ06dLmzz//dD0/a9Ystx++p556ysTHx7utIyUlxUgyu3fvtln6JdmyZYuRlOsvwNxCeExMjMnKynK1jRw50sTExBhjjFm6dKkJDQ016enpuW7rQuOLkoLW+tVXXxlJ5sSJE8aY//3Pyvvvv+/qk56ebvz9/V2h+3zZB/h//etfrrYdO3YYSWbXrl2XY7e87uWXXzZRUVF5Pn/uz5kx/9vnKVOmuPWLjIw0CxcudGsbP368adq06WWv+VKdu8+///67CQgIMOvWrXPr06dPH9O1a1djzP/eG5988onr+QkTJhhJZu/eva62AQMGmDZt2uS53bzm8ko6RjVv3tzcfPPNrsdnz541QUFBJiEhwdV28OBBI8msX78+13UMGjTI3Hfffa7H5x638vN6XG4X2ubFvv4Xc/zMz3HJGOMKUevWrTNhYWHmn//8Z773NyYmxtx555356nutzU2NGjXyDFe//fabkWReeOEFt/ZrbY5++eUX06RJEyPJVKtWzfTs2dMsWrTI9cfFi+Hpd+35x8ncnHtMOXr0qJGU5x/tQkJCLvmPw7ZD+JU2P8YY8+677xo/Pz/z7bffXvK6PLmS5qZp06bG39/fSDL9+/e/pJ+ZKwmXo18F9u7dq27duqly5coKDQ1VpUqVJEkHDhzQ7t27XTdRydaoUSO38Vu2bNHq1asVHBzsWmrUqOFa95WiTp06uv322xUbG6v7779fs2bN0rFjx/Ls36RJEzkcDtfjpk2b6vvvv1dmZqZat26tqKgoVa5cWQkJCVqwYEGOy+E8jS9qPNW6bds23XXXXYqKilJISIhatGgh6a/3z7kaNmzo+veuXbt0+vRp3X777R63W7t2bde/y5cvL0lulwReSTz9nJ3r3Hk6cuSIUlJS1KdPH7efr2effbbI/2zt3LlTp06dUuvWrd1qnzdvXo7az32dIyIiVKJECVWuXNmt7dzXPb9zme1KOUadOw/FihVT6dKlFRsb62qLiIiQ9L+fgRkzZqhhw4YqU6aMgoODNWvWrDznoCCvx+WS320W9PWXLnz8vJjjUrYDBw6oVatWevLJJ/XYY4/le3+NMW41eXKtzU1++Pn5uT2+1uaofPnyWr9+vb755hsNGTJEGRkZ6tmzp9q2bXvBS9nzkt/ftdk8HVPCwsLUq1cvtWnTRh07dtTUqVN18OBB19jhw4erb9++atWqlSZOnFikjq15udLmZ82aNerVq5dmzZqlmjVrFnh8QVxJc7No0SJt3bpVCxcu1IoVK/TSSy8VaPyVihB+FejYsaOOHj2qWbNmaePGjdq4caMk6cyZM7n+T4U573PLWVlZ6tixo5KSktyW77//Xrfeequ1/bhUxYoV06pVq/TRRx/pxhtv1Kuvvqrq1atr3759BV5XSEiItm7dqrffflvly5fXmDFjVKdOHR0/fvzyF16ITp06pfj4eAUHB2v+/PnatGmT63NKZ86ccesbFBTk+ndgYGC+1n/uTcmy34cX+z8jhc3Tz9m5zp2n7H2dNWuW28/Wt99+qw0bNtgr/iJk175ixQq32nfu3Jnjc8jnv87n34zO4XC4ve75nctza7kSjlG57XdePwOLFy/WsGHD9OCDD+rjjz9WUlKSevfu7XEOpPy9HpdLfrdZ0Nf/Qk6ePHlRx6VsZcqUUaNGjfTOO+8oPT0939utVq2adu3ala++19rc3HDDDXneYCx7zqpVq+bWfq3NUbZatWrp4Ycf1oIFC7Rq1SqtWrVKn3/+eYHXI+X/d62kfB1T5syZo/Xr1ysuLk6LFi1StWrVXL+Lxo4dqx07dqh9+/b67LPPdOONN1r53PKluJLm5/PPP1fHjh01efJk9ejRI/87eZGupLmJjIzUjTfeqK5du2rixIkaO3ZskTyhdbkRwq9wR48e1a5du/Tkk0/q9ttvV0xMjNvZ3xo1amj79u06ffq0q+38myXUr19fO3bsUHR0tKpWreq25PYLqihzOBxq1qyZnnnmGW3btk1+fn55HgjOD0EbNmzQDTfcoGLFikmSfH191apVK7344ovavn27kpOT9dlnn+V7fFGSV63fffedfv31V02cOFG33HKLatSoka8z1TfccIMCAwP16aefeqvkIuVCP2d5iYiI0HXXXacff/wxx89W9tnfourGG2+Uv7+/Dhw4kKP2yMjIi17vxczl1XSMyrZ27VrFxcVp0KBBqlevnqpWrerx7IG3Xg9PvLlNT8fPiz0uZQsMDNTy5csVEBCgNm3a6MSJE/ka161bN+3Zs0f/93//l+M5Y4zS0tJcj6+1uenatau+//57ffjhhzmemzRpkipUqKDWrVu7tV9rc5SbG2+8UZJyvWldfhTkd21+jyn16tXT6NGjtW7dOtWqVUsLFy50PVetWjUNGzZMH3/8se69917NmTPnouq25UqZnzVr1qh9+/aaOHGi+vfvn/8dvARXytyczxijjIyMInmj48vt6v6OoWtAqVKlVLp0ac2cOVPly5fXgQMHNGrUKNfz3bp10xNPPKH+/ftr1KhROnDggOsyj+yzMg8//LBmzZqlrl276h//+IfCw8P1ww8/6J133tGsWbOKZKjMzcaNG/Xpp58qPj5eZcuW1caNG3XkyBHFxMRo+/btOfqnpKRo+PDhGjBggLZu3apXX31VkyZNkiQtX75cP/74o2699VaVKlVKK1euVFZWlqpXr56v8UVNXrVWrFhRfn5+evXVVzVw4EB9++23+bqTa0BAgEaOHKkRI0bIz89PzZo105EjR7Rjxw716dPHwh7ZdaGfM0/Gjh2rIUOGKDQ0VO3atdPp06e1efNmHTt2TMOHD/dy5RcvJCREjz32mIYNG6asrCzdfPPNSk9P17p16xQcHKyePXte1HovZi6vlmPUuapWrap58+bpP//5jypVqqS33npLmzZtyvOPM956PTy50DajoqIuet2ejp8Xe1w6V1BQkFasWKF27dqp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TyooKOiS62rYsKHr30eOHFFKSor69Omjfv36udrPnj0rp9Mp6a+bzLVu3VrVq1dX27Zt1aFDB8XHx19yHQAAXEkI4QAAFHHZoftcWVlZeuaZZ9zORGcLCAjQ/v37dccdd2jgwIEaP368wsLC9N///ld9+vRRRkaGx+05HA4ZY9zachtzbpDPysqSJM2aNUuNGzd261esWDFJUv369bVv3z599NFH+uSTT9S5c2e1atVKS5Ys8VgPAABXE0I4AABXoPr162v37t05wnm2zZs36+zZs5o0aZJ8fP66D+vixYvd+vj5+SkzMzPH2DJlyujgwYOux99//73++OMPj/VERETouuuu048//qi//e1vefYLDQ3VAw88oAceeECdOnVS27Zt9dtvvyksLMzj+gEAuFoQwgEAuAKNGTNGHTp0UGRkpO6//375+Pho+/bt+uabb/Tss8+qSpUqOnv2rF599VV17NhRX375pWbMmOG2jujoaP3+++/69NNPVadOHZUoUUIlSpTQbbfdptdee01NmjRRVlaWRo4cma+vHxs7dqyGDBmi0NBQtWvXTqdPn9bmzZt17NgxDR8+XC+//LLKly+vunXrysfHR++++67KlSvHd5UDAK4pfEUZAABXoDZt2mj58uVatWqVbrrpJjVp0kSTJ0923eysbt26mjx5sl544QXVqlVLCxYsyPF1YHFxcRo4cKAeeOABlSlTRi+++KIkadKkSYqMjNStt96qbt266bHHHlOJEiUuWFPfvn31r3/9S3PnzlVsbKyaN2+uuXPnqlKlSpL+uvv6Cy+8oIYNG+qmm25ScnKyVq5c6TpTDwDAtcBhzv/QFwAAAAAA8Ar+9AwAAAAAgCWEcAAAAAAALCGEAwAAAABgCSEcAAAAAABLCOEAAAAAAFhCCAcAAAAAwBJCOAAAAAAAlhDCAQAAAACwhBAOAAAAAIAlhHAAAAAAACwhhAMAAAAAYMn/A4hqX6Mju2D6AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Helper method to print importances and visualize distribution\n",
    "def visualize_importances(feature_names, importances, title=\"Average Feature Importances\", plot=True, axis_title=\"Features\"):\n",
    "    print(title)\n",
    "    for i in range(len(feature_names)):\n",
    "        print(feature_names[i], \": \", '%.3f'%(importances[i]))\n",
    "    x_pos = (np.arange(len(feature_names)))\n",
    "    if plot:\n",
    "        plt.figure(figsize=(12,6))\n",
    "        plt.bar(x_pos, importances, align='center')\n",
    "        plt.xticks(x_pos, feature_names, wrap=True)\n",
    "        plt.xlabel(axis_title)\n",
    "        plt.title(title)\n",
    "visualize_importances(feature_names, np.mean(attr, axis=0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the feature attribution information, we obtain some interesting insights regarding the importance of various features. We see that the strongest features appear to be age and being male, which are negatively correlated with survival. Embarking at Queenstown and the number of parents / children appear to be less important features generally."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An important thing to note is that the average attributions over the test set don't necessarilly capture all the information regarding feature importances. We should also look at the distribution of attributions for each feature. It is possible that features have very different attributions for different examples in the dataset. \n",
    "\n",
    "For instance, we can visualize the distribution of attributions for sibsp, the number of siblings / spouses."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7777Tvfff79X/cyZM/XrX/9a//u//6vi4mI98MADGjx4sD777DP5+flVup1NmzapX79+6tSpkxYvXiyn06kFCxZo8ODBevnllzVq1Cjddddd6ty5s4YNG6bJkydr9OjRcjqdla6zR48eevbZZzVs2DBNmTJFPXr0UGhoaM0HSzUb+zlz5ig9PV3//d//rZtuuklnzpzR559/XuG9FEOHDtXIkSN1zz33aO/evfp//+//6dNPP9U///nPav8XfuDAAa1bt07Dhw9Xq1atlJqaqkcffVTvvfeeevbsKUm66667dOTIEf35z3/WqlWrFB0dLemHMxCrV6/WiBEj5HK5tGDBAkkqN34zZsxQjx49tGjRIk+4y8/Pr7A/Z86c0c0336zx48dr+vTp2rJlix599FF9/fXXeuutt3wa56r6XZHvv/9evXv31r///W89/PDD6tSpk95//31lZGRo165dXsFWkrKysrR9+3Y98sgjuuyyyzRnzhwNHTpUX3zxha688spK+9W3b1/FxcXphRde0OTJkz3t586d09KlS9W9e3dPH3NycjR+/Hi1adNGkrRt2zZNnjxZ3377rR566CGfxqMyGzZs0IABA9StWzctWrRILpdLK1eu1KhRo3Tq1CnPf4SmTJmipUuX6tFHH9W1116rkydPas+ePSosLKyTfuAiNfQ1Jtin7B6U7du3V1oTFRVlfvGLX3hez5o1y/z4cHrttdeMJLNr165K11HVPShl63vooYcqnfdjcXFxxuFwlNtev379TGhoqDl58qTXvl14/X7Dhg1GktmwYYOnrap7UC7s9+23326cTqf55ptvvOpSUlJMixYtzLFjx7y2c/PNN3vVvfrqq0ZStffxdO/e3URGRprjx4972s6ePWsSEhJM69atzfnz540xxuzfv99IMk8++WSV6zPmh/tVxo8fb5o1a2YkGYfDYX7xi1+Y++67r9w4XczYDxo0yFxzzTVV9qVs/ffdd59X+/Lly40ks2zZsmr355FHHjGSzNq1a40xxnz11VfG4XCYMWPGeNXV5h6UsvfvpptuqnTej4+h1NRUI8k888wzXrWPPfaYkWQ2b95sjPm/9yszM7Pcei881qrq94X3bSxatMhIMq+++qpX3RNPPGEkmXXr1nltJyoqyhQXF3va8vPzTbNmzUxGRka5bV2o7L378MMPPW1vvfWW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S9OCBQv061//Ws8995xSUlL06aefqk2bNg3VLdRSbU47AsCF6up3Cb+TGr8GCyhz587VuHHjdNddd0mSnn76ab3zzjtauHChMjIyGqpbQL3gl2XVbBufS9kf2/ddqrs+1de+2nY2oqH709DbrysNElBKS0u1c+dOTZ8+3as9OTlZW7ZsKVdfUlKikpISz+uioiJJUnFxcb30L2HWO16v9zzcv16205ScLznl9bqi9+anPK41GZ+GdOF7I9Xd+1OT99228bmU/blwW23u+0ut1lNX79eF/ZFqtv8VHUPVqWi9tRn7ivp8oZqMa0VjWJP9qu17Vp2ajE99bbuy7dfVOo0x1RebBvDtt98aSeYf//iHV/tjjz1m2rdvX65+1qxZRhITExMTExNTE5hyc3OrzQoNepOsw+Hwem2MKdcmSTNmzNCUKVM8r8+fP68jR44oPDy8wnpUrLi4WLGxscrNzVVoaGhDd6dRYexqj7GrPcau9hi72qvPsTPG6Pjx44qJiam2tkECSkREhPz8/JSfn+/VXlBQoKioqHL1TqdTTqfTq+3yyy+vzy42aaGhofzA1hJjV3uMXe0xdrXH2NVefY2dy+WqUV2DfJJsYGCgunTpouzsbK/27OxsJSYmNkSXAACARRrsEs+UKVM0ZswYde3aVT169ND//M//6JtvvtE999zTUF0CAACWaLCAMmrUKBUWFuqRRx5RXl6eEhIStGbNGsXFxTVUl5o8p9OpWbNmlbtchuoxdrXH2NUeY1d7jF3t2TJ2DmNq8qwPAADApcO3GQMAAOsQUAAAgHUIKAAAwDoEFAAAYB0CCgAAsA4BpQnLycnRuHHjFB8fr6CgIF111VWaNWuWSktLq1xu7NixcjgcXlP37t0vUa/tUNuxM8YoPT1dMTExCgoKUq9evbR3795L1Gt7PPbYY0pMTFSLFi1q/KnPHHc/qM3YcdxJR48e1ZgxY+RyueRyuTRmzBgdO3asymV+qsfcggULFB8fr+bNm6tLly56//33q6zftGmTunTpoubNm+vKK6/UokWLLkk/CShN2Oeff67z58/rueee0969ezVv3jwtWrRIM2fOrHbZAQMGKC8vzzOtWbPmEvTYHrUduzlz5mju3LmaP3++tm/fLrfbrX79+un48eOXqOd2KC0t1W233aZ7773Xp+V+6sedVLux47iTRo8erV27dmnt2rVau3atdu3apTFjxlS73E/tmHvllVeUlpamBx98UB999JFuvPFGpaSk6Jtvvqmwfv/+/br55pt144036qOPPtLMmTP1hz/8QX/961/rv7N18OXEaETmzJlj4uPjq6xJTU01t9xyy6XpUCNS3didP3/euN1u8/jjj3vavv/+e+NyucyiRYsuRRetk5mZaVwuV41qOe681XTsOO6M+fTTT40ks23bNk/b1q1bjSTz+eefV7rcT/GYu/76680999zj1fbzn//cTJ8+vcL6+++/3/z85z/3ahs/frzp3r17vfWxDGdQfmKKiooUFhZWbd3GjRsVGRmp9u3b6+6771ZBQcEl6J3dqhu7/fv3Kz8/X8nJyZ42p9Opnj17asuWLZeii40ex53vOO6krVu3yuVyqVu3bp627t27y+VyVTsGP6VjrrS0VDt37vQ6ViQpOTm50nHaunVrufr+/ftrx44dOnPmTL31VeISz0/Kv//9b/35z3+u9vuOUlJStHz5cq1fv15PPfWUtm/frj59+qikpOQS9dQ+NRm7sm/nvvAbuaOiosp9czfK47irHY67H8YgMjKyXHtkZGSVY/BTO+YOHz6sc+fO+XSs5OfnV1h/9uxZHT58uN76KhFQGqX09PRyN3ZdOO3YscNrmYMHD2rAgAG67bbbdNddd1W5/lGjRmngwIFKSEjQ4MGD9be//U3/+te/lJWVVZ+7dUnU99hJksPh8HptjCnX1hjVZux8wXFX+7GTmuZx58u4VbSv1Y1BUz7mquLrsVJRfUXtda3BviwQtTdp0iTdfvvtVda0bdvW8++DBw+qd+/enm+N9lV0dLTi4uK0b98+n5e1TX2OndvtlvTD/ziio6M97QUFBeX+B9IY+Tp2F+unfNz5oikfdzUdt08++UTfffdduXmHDh3yaQya0jFXkYiICPn5+ZU7W1LVseJ2uyus9/f3V3h4eL31VSKgNEoRERGKiIioUe23336r3r17q0uXLsrMzFSzZr6fNCssLFRubq7XL7/Gqj7HLj4+Xm63W9nZ2br22msl/XDNd9OmTXriiScuuu8NzZexqws/1ePOV035uKvpuPXo0UNFRUX64IMPdP3110uS/vnPf6qoqEiJiYk13l5TOuYqEhgYqC5duig7O1tDhw71tGdnZ+uWW26pcJkePXrorbfe8mpbt26dunbtqoCAgHrtL0/xNGHffvut+dnPfmb69OljDhw4YPLy8jzTj3Xo0MGsWrXKGGPM8ePHzdSpU82WLVvM/v37zYYNG0yPHj3MFVdcYYqLixtiNxpEbcbOGGMef/xx43K5zKpVq8zu3bvNHXfcYaKjo39SY2eMMV9//bX56KOPzMMPP2wuu+wy89FHH5mPPvrIHD9+3FPDcVcxX8fOGI47Y4wZMGCA6dSpk9m6davZunWr6dixoxk0aJBXDcecMStXrjQBAQFm8eLF5tNPPzVpaWkmODjY5OTkGGOMmT59uhkzZoyn/quvvjItWrQw9913n/n000/N4sWLTUBAgHnttdfqva8ElCYsMzPTSKpw+jFJJjMz0xhjzKlTp0xycrJp1aqVCQgIMG3atDGpqanmm2++aYA9aDi1GTtjfnjkc9asWcbtdhun02luuukms3v37kvc+4aXmppa4dht2LDBU8NxVzFfx84YjjtjjCksLDR33nmnCQkJMSEhIebOO+80R48e9arhmPvBs88+a+Li4kxgYKD51a9+ZTZt2uSZl5qaanr27OlVv3HjRnPttdeawMBA07ZtW7Nw4cJL0k+HMf//3S4AAACW4CkeAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAFjn/wPLGR2EMz8MzgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(attr[:,1], 100);\n",
    "plt.title(\"Distribution of Sibsp Attribution Values\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We note that a vast majority of the examples have an attribution value of 0 for sibsp, which likely corresponds to having a value of 0 for the feature (IntegratedGradients would provide an attribution of 0 when the feature value matches the baseline of 0). More significantly, we see that although the average seems smaller in magnitude in the plot above, there are a small number of examples with extremely negative attributions for this feature."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To better understand this, we can bucket the examples by the value of the sibsp feature and plot the average attribution for the feature. In the plot below, the size of the dot is proportional to the number of examples with that value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Sw6HQw6H44rt4uPj5XQ6tX37dt1+++2SpG3btsnpdCohIaHE/S4HpYMHD2rt2rWqVq3aFY+1f/9+5efnKyoqyvMTAQAANyyfmOB96623qlu3bhoxYoS2bt2qrVu3asSIEbr//vvd7oRr3Lixli5dKkm6ePGifv3rXys5OVkLFixQQUGBMjMzlZmZqby8PEnSoUOH9Oqrryo5OVlHjx7VsmXL1LdvX7Vs2VLt2rWz5FwBAED54hNhSbp0x1pcXJy6dOmiLl26qHnz5po/f75bm9TUVDmdTknSsWPH9Mknn+jYsWO67bbbFBUV5Vou30EXFBSk1atXq2vXroqNjdWoUaPUpUsXrVq1Sv7+/tf9HAEAQPljMwzDsLoIX5ednS273S6n03nFOVEAAKB88PT322dGlgAAAKxAWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADBBWAIAADARYHUBgJXO/ZSv95OPaU/6WdWqEqKBt9+i6KqhVpcFAChHCEu4aTkv5Kv325t09PR52STZZNPsTUe06Hfxui26stXlAQDKCS7D4aY1Z/NRfXf6vAxDKjSkAsNQ3sVCTfn8K6tLAwCUI4Ql3LS2HD6lQsN9XaEhJR89I8Mwit8JAHDTISzhphURXkH+frYi66uEBslmK7oeAHBzIizhpjUkvo4KfzG0ZJM07M4YS+oBAJRPhCXctNrEVNX0gS0Vaa8gSQoN8teT9zTQEx0aWFwZAKA84W443NTub15TPZpF6dT5XNlDAhUc4G91SQCAcoawhJuen59NEeEVrC4DAFBOcRkOAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADAhM+EpTNnzmjw4MGy2+2y2+0aPHiwzp49a7rPo48+KpvN5rbccccdbm1yc3P11FNPyeFwqGLFinrggQd07NixMjwTAADgS3wmLA0cOFApKSlasWKFVqxYoZSUFA0ePPiK+3Xr1k0ZGRmuZdmyZW7bx4wZo6VLl2rRokXauHGjcnJydP/996ugoKCsTgUAAPiQAKsL8MSBAwe0YsUKbd26VW3btpUkzZgxQ/Hx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JV26623dunUaNmwY70IDAAA3Ba8eShkQEKA///nPXGoDAAA3Da+f4N2xY0etW7euDEoBAAAof7x+kW737t01btw47du3T61bt1bFihXdtj/wwAOlVhwAAIDVvH7diZ9fyYNRN+vdcDzBGwAA31OqT/D+ucLCwmsqDAAAwJd4PWdp3rx5ys3NLbI+Ly9P8+bNK5WiAAAAyguvL8P5+/u7HlD5c6dPn1ZERASX4bgMBwCAT/D099vrkaXLT+r+pWPHjslut3vbHQAAQLnm8Zylli1bymazyWazqWPHjgoI+N+uBQUFOnLkiLp161YmRQIAAFjF47DUu3dvSVJKSoq6du2qsLAw17agoCDFxMTooYceKvUCAQAArORxWJo4caIkKSYmRgMGDFBwcHCZFQUAAFBeeD1nafLkycrJySmy/uzZs6pXr16pFAUAAFBeeB2Wjh49Wuwdb7m5ufr+++9LpSgAAIDywuPLcJ988onrz1988YXbnW8FBQVavXq1YmJiSrU4AAAAq3k9wdtms2no0KFu2wIDAxUTE6Np06aVanEAAABW8zgsXX7NSd26dbVjxw45HI4yKwoAAKC88HrO0pEjR4oEpcLCQn366aeu0ScAAIAbhddh6ecOHjyocePGqXbt2urXr19p1QQAAFBueHwZ7rIff/xR77//vmbOnKmtW7eqoKBAb7zxhoYNG+b2oEoAAIAbgccjS9u3b9fvfvc7RUZG6q233tJDDz2k9PR0+fn5qVOnTgQlAABwQ/J4ZCkhIUFPPfWUtm/frtjY2LKsCQAAoNzwOCzde++9mjlzprKysjR48GB17dpVNputLGsDAACwnMeX4VauXKn9+/crNjZWTzzxhKKiojR69GhJIjQBAIAblld3w0VHR2vChAk6cuSI5s+fr6ysLAUEBKhXr1566aWXtGvXrrKqEwAAwBI2wzCMa+ngzJkz+te//qVZs2Zp7969xb437kaXnZ0tu90up9OpSpUqWV0OAADwgKe/39ccln5u165datWqVWl15zMISwAA+B5Pf7+v6aGUv3QzBiUAAHBjK9WwBAAAcKMhLAEAAJggLAEAAJi4qrB08eJFrVq1Su+++67OnTsnSTp+/LhycnJKtTgAAACreR2WvvvuO8XFxalXr1568skndfLkSUnS1KlTNXbs2FIv8LIpU6YoISFBoaGhqly5skf7GIahSZMmqWbNmgoJCVGHDh20f/9+tza5ubl66qmn5HA4VLFiRT3wwAM6duxYGZwBAADwRV6HpdGjR6tNmzY6c+aMQkJCXOv79Omj1atXl2pxP5eXl6e+ffvqiSee8HifqVOn6i9/+Yveeust7dixQ5GRkercubNrNEySxowZo6VLl2rRokXauHGjcnJydP/999+Uz4sCAABFef2cJYfDoU2bNik2Nlbh4eHas2eP6tWrp6NHj6pJkya6cOFCWdUqSZozZ47GjBmjs2fPmrYzDEM1a9bUmDFj9MILL0i6NIpUo0YNvf7663rsscfkdDpVvXp1zZ8/X/3795d06XJidHS0li1bpq5duxbbd25urnJzc12fs7OzFR0dzXOWAADwIWX2nKXCwsJiR12OHTum8PBwb7srM0eOHFFmZqa6dOniWhccHKz27dtr8+bNkqSdO3cqPz/frU3NmjXVrFkzV5viJCYmym63u5bo6OiyOxEAAGApr8NS586d9eabb7o+22w25eTkaOLEierRo0dp1nZNMjMzJUk1atRwW1+jRg3XtszMTAUFBalKlSoltinOuHHj5HQ6XUt6enopVw8AAMoLr8PSG2+8ofXr16tJkyb66aefNHDgQMXExOj777/X66+/7lVfkyZNks1mM12Sk5O9LdGNzWZz+2wYRpF1v3SlNsHBwapUqZLbAgAAbkwB3u5Qs2ZNpaSkaOHChdq1a5cKCws1fPhwDRo0yG3CtydGjhypAQMGmLaJiYnxtkRJUmRkpKRLo0dRUVGu9VlZWa7RpsjISOXl5enMmTNuo0tZWVlKSEi4quMCAIAbi9dhSZJCQkI0bNgwDRs27JoO7nA45HA4rqmPktStW1eRkZFKSkpSy5YtJV26o279+vWuEbDWrVsrMDBQSUlJ6tevnyQpIyND+/bt09SpU8ukLgAA4Fu8DkuffPJJsettNpsqVKigBg0aqG7dutdc2C+lpaXphx9+UFpamgoKCpSSkiJJatCggcLCwiRJjRs3VmJiovr06SObzaYxY8botddeU8OGDdWwYUO99tprCg0N1cCBAyVJdrtdw4cP17PPPqtq1aqpatWqGjt2rOLi4tSpU6dSPwcAAOB7vA5LvXv3ls1m0y+fOHB5nc1m05133qmPPvqoyMTpazFhwgTNnTvX9fnyaNHatWvVoUMHSVJqaqqcTqerzfPPP68ff/xRv//973XmzBm1bdtWK1eudLtr74033lBAQID69eunH3/8UR07dtScOXPk7+9farUDkC7kXdQ3J3IUFuyv+tXDrjh3EADKC6+fs7R69Wq9/PLLmjJlim6//XZJ0vbt2/XKK69o/Pjxstvteuyxx9S2bVvNnDmzTIoubzx9TgNws/rqeLYGz9qm0zl5kqQuTWro74NaKdCf11MCsI6nv99eh6VmzZrpvffeKzIBetOmTfrd736n/fv3a9WqVRo2bJjS0tKurnofQ1gCzN09da2+P3NBBf//vzY2Sc91i9XvOzSwtC4ANzdPf7+9vgx36NChYjusVKmSDh8+LElq2LChTp065W3XAG5AObkXlfbDL57sb5O+POYsfgcAKGe8HgNv3bq1nnvuOdcLdCXp5MmTev755/WrX/1KknTw4EHVrl279KoE4LNCA/0VGuQ+B9DPZlONShUsqggAvON1WJo5c6aOHDmi2rVrq0GDBmrYsKFq166to0eP6p///KckKScnR+PHjy/1YgH4Hj8/m/7Qq5lskvz9bPKzSY6wIP2+Q32rSwMAj3g9Z0m69ITrL774Qt98840Mw1Djxo3VuXNn+fndnJM1mbMEXNnO785o07enVDE4QH1a1lLVikFWlwTgJldmE7xRFGEJAADfU2YTvCXp/PnzWr9+vdLS0pSXl+e2bdSoUVfTJQAAQLnkdVjavXu3evTooQsXLuj8+fOqWrWqTp06pdDQUEVERBCWAADADcXrSUZPP/20evbsqR9++EEhISHaunWrvvvuO7Vu3Vp//vOfy6JGAAAAy3gdllJSUvTss8/K399f/v7+ys3NVXR0tKZOnaqXXnqpLGoEAACwjNdhKTAw0PVOpxo1arie0m2322+aJ3YDAICbh9dzllq2bKnk5GQ1atRI99xzjyZMmKBTp05p/vz5iouLK4saAQAALOP1yNJrr72mqKgoSdIf/vAHVatWTU888YSysrL03nvvlXqBAAAAVvJqZMkwDFWvXl1NmzaVJFWvXl3Lli0rk8IAAADKA69GlgzDUMOGDXXs2LGyqgcAAKBc8Sos+fn5qWHDhjp9+nRZ1QMAAFCueD1naerUqXruuee0b9++sqgHAACgXPH63XBVqlTRhQsXdPHiRQUFBSkkJMRt+w8//FCqBfoC3g0HAIDvKbN3w7355pvXUhcA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07/+9S8NGzbMZ14q7ynCEqBLb55+5plndOedd6pZs2ZWl2OZL7/8UmFhYQoODtbjjz+upUuXqkmTJlaXZYlFixZp165dSkxMtLoUy7Vt21bz5s3TF198oRkzZigzM1MJCQk6ffq01aVZ4vDhw3rnnXfUsGFDffHFF3r88cc1atQozZs3z+rSLPXRRx/p7NmzevTRR60updRxGQ6QNHLkSO3du1cbN260uhRLxcbGKiUlRWfPntWSJUs0dOhQrV+//qYLTOnp6Ro9erRWrlypChUqWF2O5X5+6T4uLk7x8fGqX7++5s6dq2eeecbCyqxRWFioNm3a6LXXXpMktWzZUvv379c777yjIUOGWFyddWbOnKnu3burZs2aVpdS6hhZwk3vqaee0ieffKK1a9eqdu3aVpdjqaCgIDVo0EBt2rRRYmKiWrRoob/+9a9Wl3Xd7dy5U1lZWWrdurUCAgIUEBCg9evX629/+5sCAgJUUFBgdYmWqlixouLi4nTw4EGrS7FEVFRUkf+BuPXWW5WWlmZRRdb77rvvtGrVKv32t7+1upQywcgSblqGYeipp57S0qVLtW7dOtWtW9fqksodwzCUm5trdRnXXceOHYvc7fWb3/xGjRs31gsvvCB/f3+LKisfcnNzdeDAAd11111Wl2KJdu3aFXnMyDfffKM6depYVJH1Lt8gc99991ldSpkgLN1kcnJy9O2337o+HzlyRCkpKapatapuueUWCyu7/p588kn9+9//1scff6zw8HBlZmZKkux2u0JCQiyu7vp76aWX1L17d0VHR+vcuXNatGiR1q1bV+SuwZtBeHh4kblrFStWVLVq1W7KOW1jx45Vz549dcsttygrK0t//OMflZ2draFDh1pdmiWefvppJSQk6LXXXlO/fv20fft2vffee3rvvfesLs0ShYWFmj17toYOHaqAgBs0Vhi4qaxdu9aQVGQZOnSo1aVdd8V9D5KM2bNnW12aJYYNG2bUqVPHCAoKMqpXr2507NjRWLlypdVllRvt27c3Ro8ebXUZlujfv78RFRVlBAYGGjVr1jQefPBBY//+/VaXZalPP/3UaNasmREcHGw0btzYeO+996wuyTJffPGFIclITU21upQyYzMMw7AmpgEAAJR/TPAGAAAwQVgCAAAwQVgCAAAwQVgCAAAwQVgCAAAwQVgCAAAwQVgCAAAwQVgCAAAwQVgC4HMmTZqk2267zfX50UcfVe/evS2rByWbM2eOKleubHUZwDUhLAE+YPPmzfL391e3bt2sLuW6WLJkidq2bSu73a7w8HA1bdpUzz77rGv72LFjtXr1agsrlNatWyebzVZkeeWVV0rtGDabTR999FGp9eeNJUuWyN/fX2lpacVub9y4sUaNGnWdqwKsQVgCfMCsWbP01FNPaePGjSX+eJWWgoICFRYWlukxzKxatUoDBgzQr3/9a23fvl07d+7UlClTlJeX52oTFhamatWqWVbjz6WmpiojI8O1vPjii1aXVMTPvztPPfDAA6pWrZrmzp1bZNumTZuUmpqq4cOHl0Z5QLlHWALKufPnz+v999/XE088ofvvv19z5sxxbYuPjy/y43zy5EkFBgZq7dq1ki79UD7//POqVauWKlasqLZt22rdunWu9pcvk3z22Wdq0qSJgoOD9d1332nHjh3q3LmzHA6H7Ha72rdvr127drkd6+uvv9add96pChUqqEmTJlq1alWR0ZDvv/9e/fv3V5UqVVStWjX16tVLR48eLfF8P/vsM91555167rnnFBsbq0aNGql3796aPn26q80vL8NdNnnyZEVERKhSpUp67LHH3ELCBx98oLi4OIWEhKhatWrq1KmTzp8/L+l/l/HM9i9JRESEIiMjXUtYWJhH532l7zcmJkaS1KdPH9lsNtfn4i45jhkzRh06dHB97tChg0aOHKlnnnlGDodDnTt3liR99dVX6tGjh8LCwlSjRg0NHjxYp06dKva8AgMDNXjwYM2ZM0e/fIXorFmz1Lp1a7Vo0UJ/+ctfFBcXp4oVKyo6Olq///3vlZOTU+L35Un9hmFo6tSpqlevnkJCQtSiRQt98MEHJfYJlDXCElDOLV68WLGxsYqNjdUjjzyi2bNnu368Bg0apIULF7r9mC1evFg1atRQ+/btJUm/+c1vtGnTJi1atEh79+5V37591a1bNx08eNC1z4ULF5SYmKh//vOf2r9/vyIiInTu3DkNHTpUGzZs0NatW9WwYUP16NFD586dkyQVFhaqd+/eCg0N1bZt2/Tee+/p5Zdfdqv9woULuueeexQWFqb//ve/2rhxo8LCwtStW7cSg0hkZKT279+vffv2efU9rV69WgcOHNDatWu1cOFCLV26VJMnT5YkZWRk6OGHH9awYcN04MABrVu3Tg8++KDb92a2v7c8Oe8rfb87duyQJM2ePVsZGRmuz56aO3euAgICtGnTJr377rvKyMhQ+/btddtttyk5OVkrVqzQiRMn1K9fvxL7GD58uA4fPqz169e71l0O75dHlfz8/PS3v/1N+/bt09y5c7VmzRo9//zzXtX6S6+88opmz56td955R/v379fTTz+tRx55xK0O4LoyAJRrCQkJxptvvmkYhmHk5+cbDofDSEpKMgzDMLKysoyAgADjv//9r6t9fHy88dxzzxmGYRjffvutYbPZjO+//96tz44dOxrjxo0zDMMwZs+ebUgyUlJSTOu4ePGiER4ebnz66aeGYRjG8uXLjYCAACMjI8PVJikpyZBkLF261DAMw5g5c6YRGxtrFBYWutrk5uYaISEhxhdffFHscXJycowePXoYkow6deoY/fv3N2bOnGn89NNPrjYTJ040WrRo4fo8dOhQo2rVqsb58+dd69555x0jLCzMKCgoMHbu3GlIMo4ePVrsMa+0f3HWrl1rSDIqVqzotpw6deqqzvuX369hGG7f5c9r7dWrl9u60aNHG+3bt3d9bt++vXHbbbe5tRk/frzRpUsXt3Xp6emGJCM1NbXYmgzDMNq2bWsMGTLE9XnWrFlGSEiIcebMmWLbv//++0a1atVcn2fPnm3Y7XaP68/JyTEqVKhgbN682a3N8OHDjYcffrjEOoGyxMgSUI6lpqZq+/btGjBggCQpICBA/fv316xZsyRJ1atXV+fOnbVgwQJJ0pEjR7RlyxYNGjRIkrRr1y4ZhqFGjRopLCzMtaxfv16HDh1yHScoKEjNmzd3O3ZWVpYef/xxNWrUSHa7XXa7XTk5Oa45U6mpqYqOjlZkZKRrn9tvv92tj507d+rbb79VeHi469hVq1bVTz/95Hb8n6tYsaI+//xzffvtt3rllVcUFhamZ599VrfffrsuXLhQ4nfVokULhYaGuj7Hx8crJydH6enpatGihTp27Ki4uDj17dtXM2bM0JkzZzze38yGDRuUkpLiWqpUqeLReV/p+71Wbdq0cfu8c+dOrV271u3fQePGjSWpxL8L6dLo0gcffOAa8Zo1a5YefPBB1x1ua9euVefOnVWrVi2Fh4dryJAhOn36tOsSp7e++uor/fTTT+rcubNbrfPmzTOtEyhLAVYXAKBkM2fO1MWLF1WrVi3XOsMwFBgYqDNnzqhKlSoaNGiQRo8erenTp+vf//63mjZtqhYtWki6dKnM399fO3fulL+/v1vfl+fWSFJISIhsNpvb9kcffVQnT57Um2++qTp16ig4OFjx8fGuy0iGYRTZ55cKCwvVunVrV5j7uerVq5vuW79+fdWvX1+//e1v9fLLL6tRo0ZavHixfvOb35ju90s2m03+/v5KSkrS5s2btXLlSk2fPl0vv/yytm3bprp1615xfzN169Ytcmu8J+d9pe+3JH5+fkXmEOXn5xdpV7FixSI19ezZU6+//nqRtlFRUSUeb8CAAXr66ae1ePFidejQQRs3btSrr74qSfruu+/Uo0cPPf744/rDH/6gqlWrauPGjRo+fHixNXlS/+WbCz7//HO3f/eSFBwcXGKdQFkiLAHl1MWLFzVv3jxNmzZNXbp0cdv20EMPacGCBRo5cqR69+6txx57TCtWrNC///1vDR482NWuZcuWKigoUFZWlu666y6vjr9hwwa9/fbb6tGjhyQpPT3dbTJw48aNlZaWphMnTqhGjRqSVGReTatWrbR48WLXpOmrFRMTo9DQUNPRij179ujHH39USEiIJGnr1q0KCwtT7dq1JV0KPe3atVO7du00YcIE1alTR0uXLtUzzzzj0f7e8OS8r/T9SpcmWRcUFLitq169epH5XCkpKQoMDLxiTUuWLFFMTIwCAjz/T394eLj69u2r2bNn6/Dhw6pXr55rMnZycrIuXryoadOmyc/v0oWK999/37S/K9V/+SaDtLQ017w7wGpchgPKqc8++0xnzpzR8OHD1axZM7fl17/+tWbOnCnp0ghCr169NH78eB04cEADBw509dGoUSMNGjRIQ4YM0YcffqgjR45ox44dev3117Vs2TLT4zdo0EDz58/XgQMHtG3bNg0aNMgVJCSpc+fOql+/voYOHaq9e/dq06ZNrgnel0djBg0aJIfDoV69emnDhg06cuSI1q9fr9GjR+vYsWPFHnfSpEl6/vnntW7dOh05ckS7d+/WsGHDlJ+f77qrqzh5eXkaPny4vvrqKy1fvlwTJ07UyJEj5efnp23btum1115TcnKy0tLS9OGHH+rkyZO69dZbPdrfW56c95W+X+lSSFy9erUyMzNdlw3vvfdeJScna968eTp48KAmTpzo0WT4J598Uj/88IMefvhhbd++XYcPH9bKlSs1bNiwIoHsl4YPH67NmzfrnXfe0bBhw1x/v/Xr19fFixc1ffp0HT58WPPnz9c//vEP076uVH94eLjGjh2rp59+WnPnztWhQ4e0e/du/f3vfy/2MQbAdWHpjCkAJbr//vuNHj16FLvt8oTlnTt3GoZhGJ9//rkhybj77ruLtM3LyzMmTJhgxMTEGIGBgUZkZKTRp08fY+/evYZhFJ2Ae9muXbuMNm3aGMHBwUbDhg2N//znP0adOnWMN954w9XmwIEDRrt27YygoCCjcePGxqeffmpIMlasWOFqk5GRYQwZMsRwOBxGcHCwUa9ePWPEiBGG0+ks9tzWrFljPPTQQ0Z0dLQRFBRk1KhRw+jWrZuxYcMGV5viJnj36tXLmDBhglGtWjUjLCzM+O1vf+uaFP7VV18ZXbt2NapXr24EBwcbjRo1MqZPn+7x/sW5PMG7pInOVzpvT77fTz75xGjQoIEREBBg1KlTx7V+woQJRo0aNQy73W48/fTTxsiRI4tM8B49enSRmr755hujT58+RuXKlY2QkBCjcePGxpgxY9wmopckNjbW8PPzM9LT093W/+UvfzGioqKMkJAQo2vXrsa8efPcvpfi/n1dqf7CwkLjr3/9qxEbG2sEBgYa1atXN7p27WqsX7/+inUCZcFmGL+4eAwAV2nTpk2688479e2336p+/fpWl+OxRx99VGfPnrXsadkAyjfmLAG4akuXLlVYWJgaNmyob7/9VqNHj1a7du18KigBwJUQlgBctXPnzun5559Xenq6HA6HOnXqpGnTplldFgCUKi7DAQAAmOBuOAAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABP/D/VOL8NjdZr1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bin_means, bin_edges, _ = stats.binned_statistic(test_features[:,1], attr[:,1], statistic='mean', bins=6)\n",
    "bin_count, _, _ = stats.binned_statistic(test_features[:,1], attr[:,1], statistic='count', bins=6)\n",
    "\n",
    "bin_width = (bin_edges[1] - bin_edges[0])\n",
    "bin_centers = bin_edges[1:] - bin_width/2\n",
    "plt.scatter(bin_centers, bin_means, s=bin_count)\n",
    "plt.xlabel(\"Average Sibsp Feature Value\");\n",
    "plt.ylabel(\"Average Attribution\");\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that the larger magnitude attributions correspond to the examples with larger Sibsp feature values, suggesting that the feature has a larger impact on prediction for these examples. Since there are substantially fewer of these examples (compared to those with a feature value of 0), the average attribution does not completely capture this effect."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have a better understanding of the importance of different input features, the next question we can ask regarding the function of the neural network is how the different neurons in each layer work together to reach the prediction. For instance, in our first hidden layer output containing 12 units, are all the units used for prediction? Do some units learn features positively correlated with survival while others learn features negatively correlated with survival?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This leads us to the second type of attributions available in Captum, **Layer Attributions**. Layer attributions allow us to understand the importance of all the neurons in the output of a particular layer. For this example, we will be using Layer Conductance, one of the Layer Attribution methods in Captum, which is an extension of Integrated Gradients applied to hidden neurons. More information regarding conductance can be found in the original paper here: https://arxiv.org/abs/1805.12233."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To use Layer Conductance, we create a LayerConductance object passing in the model as well as the module (layer) whose output we would like to understand. In this case, we choose net.sigmoid1, the output of the first hidden layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "cond = LayerConductance(net, net.sigmoid1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now obtain the conductance values for all the test examples by calling attribute on the LayerConductance object. LayerConductance also requires a target index for networks with mutliple outputs, defining the index of the output for which gradients are computed. Similar to feature attributions, we provide target=1, corresponding to survival. LayerConductance also utilizes a baseline, but we simply use the default zero baseline as in Integrated Gradients."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "cond_vals = cond.attribute(test_input_tensor,target=1)\n",
    "cond_vals = cond_vals.detach().numpy()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can begin by visualizing the average conductance for each neuron."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average Neuron Importances\n",
      "0 :  -0.123\n",
      "1 :  -0.040\n",
      "2 :  0.030\n",
      "3 :  0.012\n",
      "4 :  -0.022\n",
      "5 :  -0.137\n",
      "6 :  0.009\n",
      "7 :  0.001\n",
      "8 :  -0.136\n",
      "9 :  -0.000\n",
      "10 :  -0.306\n",
      "11 :  0.016\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+oAAAIhCAYAAADZxkARAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABHKklEQVR4nO3df3zN9f//8fsx28xwwtpmmYzEYn6/se2dH2HIj8pbLFmk9q53pIXy6/3Oj8r8qvQmibcQ3ugjvCUt8yPxYRjmV1oqP2OoOFtiNnt9/+jjfN/HbEzOzjPdrpfL63LpPM/z+Xo9nk/bpXPf85zXsVmWZQkAAAAAABihhKcLAAAAAAAA/x9BHQAAAAAAgxDUAQAAAAAwCEEdAAAAAACDENQBAAAAADAIQR0AAAAAAIMQ1AEAAAAAMAhBHQAAAAAAgxDUAQAAAAAwCEEdAOBW//znP2Wz2VSnTh1Pl2Kcli1bymazqX379vmeO3z4sGw2myZNmuSByorP7TDPzZs3a9SoUTp37pynSwEA3CYI6gAAt3r//fclSfv379fWrVs9XI2ZPvvsM61bt87TZeAmbd68WaNHjyaoAwBuGYI6AMBtUlNTtXv3bnXs2FGSNGvWrGKvwbIsXbhwodive6PuvfdeVatWTS+//LIsy/J0OZKkX375xdMl/C5cuHDBmH8zAMDthaAOAHCbK8F83LhxioqK0qJFi5whMCcnR4GBgYqLi8s37ty5c/Lz89PAgQOdbZmZmRo8eLDCwsLk4+Oju+66SwkJCTp//rzLWJvNpv79+2v69OkKDw+Xr6+v5s6dK0kaPXq0mjZtqgoVKqhcuXJq2LChZs2alS9sZWdna9CgQQoODlbp0qXVvHlz7dixQ1WrVlWfPn1c+mZkZOiZZ55R5cqV5ePjo7CwMI0ePVq5ubk3tEbe3t56/fXXtWPHDi1evPi6/W/kep9//rlsNps+//xzl7FX3mY+Z84cZ1ufPn1UpkwZ7d27VzExMSpbtqxat24tSfrpp5/03HPP6a677pKPj4+qVaumESNGKDs72+W8V9Z83rx5Cg8PV+nSpVWvXj2tXLnyhtbganPmzJHNZtO6desUHx+vihUrqly5cnriiSd0/vx5ZWRkqHv37rrjjjtUqVIlDR48WDk5OfnmOWHCBL3++uuqUqWKSpUqpcaNG2vt2rX5rrdp0ya1bt1aZcuWVenSpRUVFaVPPvnkmjWtXr1affv21Z133qnSpUtr2LBheumllyRJYWFhstlsLmu/ePFixcTEqFKlSvLz81N4eLiGDh2a7+f2yr/DN998owcffFBlypRRaGioBg0alG+9s7OzNWbMGIWHh6tUqVKqWLGiWrVqpc2bNzv7WJaladOmqX79+vLz81P58uXVrVs3fffddy7n2rVrlzp16qTAwED5+voqJCREHTt21PHjx4v+DwcAuGVKeroAAMDt6cKFC1q4cKH+9Kc/qU6dOurbt6+efvpp/c///I969+4tb29v9erVS9OnT9c777yjcuXKOccuXLhQFy9e1JNPPinp1x3eFi1a6Pjx4xo+fLjq1q2r/fv365VXXtHevXu1Zs0a2Ww25/jly5dr48aNeuWVVxQcHKzAwEBJvwa4Z555RlWqVJEkpaSk6Pnnn9f333+vV155xTn+ySef1OLFi/Xyyy/rgQce0JdffqlHHnlEmZmZLnPMyMhQkyZNVKJECb3yyiuqXr26tmzZotdee02HDx/W7Nmzb2itevTooUmTJunvf/+7/vKXv8jb2/ua/W7V9a526dIldenSRc8884yGDh2q3NxcXbx4Ua1atdK3336r0aNHq27dutq4caMSExOVlpaWL8h+8skn2r59u8aMGaMyZcpowoQJeuSRR5Senq5q1ardVF1PP/20unbtqkWLFmnXrl0aPny4cnNzlZ6erq5du+qvf/2r1qxZo/HjxyskJMTlDzuSNHXqVN19992aPHmy8vLyNGHCBHXo0EEbNmxQZGSkJGnDhg1q27at6tatq1mzZsnX11fTpk1T586dtXDhQvXo0cPlnH379lXHjh01b948nT9/Xo0bN9Yvv/yiKVOmaOnSpapUqZIk6b777pMkHTx4UA8++KASEhLk7++vr776SuPHj9e2bdvyfdwhJydHXbp00VNPPaVBgwbpiy++0Kuvviq73e78+czNzVWHDh20ceNGJSQk6IEHHlBubq5SUlJ09OhRRUVFSZKeeeYZzZkzRwMGDND48eP1008/acyYMYqKitLu3bsVFBSk8+fPq23btgoLC9M777yjoKAgZWRkaP369crKyrqpfzMAwC1iAQDgBh988IElyZo+fbplWZaVlZVllSlTxrr//vudffbs2WNJsmbMmOEytkmTJlajRo2cjxMTE60SJUpY27dvd+m3ZMkSS5K1atUqZ5sky263Wz/99FOh9V2+fNnKycmxxowZY1WsWNHKy8uzLMuy9u/fb0myhgwZ4tJ/4cKFliSrd+/ezrZnnnnGKlOmjHXkyBGXvpMmTbIkWfv37y+0hhYtWli1a9e2LMuy1qxZY0mypkyZYlmWZR06dMiSZE2cOLHI11u/fr0lyVq/fr1LvyvnnD17trOtd+/eliTr/fffd+k7ffp0S5L14YcfurSPHz/ekmStXr3a2SbJCgoKsjIzM51tGRkZVokSJazExMRC1+Ba85w9e7YlyXr++edd+j788MOWJOvNN990aa9fv77VsGHDfOcMCQmxLly44GzPzMy0KlSoYLVp08bZ1qxZMyswMNDKyspytuXm5lp16tSxKleu7Py5uFLTE088kW8OEydOtCRZhw4dKnSueXl5Vk5OjrVhwwZLkrV7927nc1f+Ha5e7wcffNCqWbOm8/GV36uZM2cWeJ0tW7ZYkqw33njDpf3YsWOWn5+f9fLLL1uWZVmpqamWJGv58uWF1g0AKH689R0A4BazZs2Sn5+fYmNjJUllypTRo48+qo0bN+rgwYOSpIiICDVq1MhlJ/jAgQPatm2b+vbt62xbuXKl6tSpo/r16ys3N9d5tGvX7ppv8X7ggQdUvnz5fDWtW7dObdq0kd1ul5eXl7y9vfXKK6/oxx9/1OnTpyX9usMqSd27d3cZ261bN5Us6fpGtJUrV6pVq1YKCQlxqatDhw4u57oRrVu3VkxMjMaMGVPgbuatvN7V/vKXv7g8Xrdunfz9/dWtWzeX9itv/b/6LeStWrVS2bJlnY+DgoIUGBioI0eO3HRNnTp1cnkcHh4uSc57Hvx3+7Wu07VrV5UqVcr5uGzZsurcubO++OILXb58WefPn9fWrVvVrVs3lSlTxtnPy8tLcXFxOn78uNLT013OefU6Xc93332nnj17Kjg42Pkz16JFC0m//qz/N5vNps6dO7u01a1b12Vun376qUqVKuXy+3G1lStXymazqVevXi4/J8HBwapXr57z9+Wee+5R+fLlNWTIEE2fPl1ffvllkeYGAHAfgjoA4Jb75ptv9MUXX6hjx46yLEvnzp3TuXPnnKHvyp3gpV/fSrxlyxZ99dVXkqTZs2fL19dXjz32mLPPqVOntGfPHnl7e7scZcuWlWVZ+uGHH1yuf+Xtx/9t27ZtiomJkSTNnDlT//u//6vt27drxIgRkuS84dyPP/4o6deg+d9KliypihUrurSdOnVKH3/8cb66ateuLUn56rqe8ePH64cffijwq8pu9fWuKF26tMtHD6Rf1yE4ONjlIwWSFBgYqJIlSzrX6Yqr10aSfH19f9ON/CpUqODy2MfHp8D2ixcv5hsfHBx8zbZLly7p559/1tmzZ2VZ1jV/XkJCQiQp3zyv1bcgP//8s+6//35t3bpVr732mj7//HNt375dS5culaR8a1O6dGmXPyxIv67hf8/tzJkzCgkJUYkSBb+EO3XqlCzLUlBQUL6flZSUFOfPid1u14YNG1S/fn0NHz5ctWvXVkhIiEaOHOnymX8AQPHjM+oAgFvu/fffl2VZWrJkiZYsWZLv+blz5+q1116Tl5eXHnvsMQ0cOFBz5szR66+/rnnz5unhhx922REPCAiQn5+fS8D/bwEBAS6Prw6XkrRo0SJ5e3tr5cqVLmFo+fLlLv2uBM5Tp07prrvucrbn5ubmC20BAQGqW7euXn/99WvWdSXs3aj69evrscce05tvvqkHH3ww3/M3er0r87v6JmQFBflrrVfFihW1detWWZbl8vzp06eVm5ubb81NlJGRcc02Hx8flSlTRiVLllSJEiV08uTJfP1OnDgh6cZ+tgqybt06nThxQp9//rlzF13Sb/oatzvvvFObNm1SXl5egWE9ICBANptNGzdulK+vb77n/7stIiJCixYtkmVZ2rNnj+bMmaMxY8bIz89PQ4cOvek6AQC/DUEdAHBLXb58WXPnzlX16tX1r3/9K9/zK1eu1BtvvKFPP/1UnTp1Uvny5fXwww/rgw8+UGRkpDIyMvK9rbdTp04aO3asKlasqLCwsJuqy2azqWTJkvLy8nK2XbhwQfPmzXPp17x5c0m/3q27YcOGzvYlS5bku5N7p06dtGrVKlWvXv2ab7W/Ga+99pqWLFmi0aNH53vuRq9XtWpVSdKePXvUrl07Z/uKFStuuI7WrVvrww8/1PLly/XII4842z/44APn86ZbunSpJk6c6PzDRVZWlj7++GPdf//98vLykr+/v5o2baqlS5dq0qRJ8vPzkyTl5eVp/vz5qly5su69997rXudK8L16h/xKqL86LL/33ns3PacOHTpo4cKFmjNnToFvf+/UqZPGjRun77//Pt9HOApi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2hSO9SkYa1M41qdwrE/BWJuCWZalrKwshYSEqESJwj+F/ofcUS9RooQqV67s6TKMVq5cOX6xCsH6FI71KRhrUzjWp3CsT8FYm8KxPgVjbQrH+hSO9SkYa3Nt19tJv4KbyQEAAAAAYBCCOgAAAAAABiGow4Wvr69GjhwpX19fT5diJNancKxPwVibwrE+hWN9CsbaFI71KRhrUzjWp3CsT8FYm1vjD3kzOQAAAAAATMWOOgAAAAAABiGoAwAAAABgEII6AAAAAAAGIagDAAAAAGAQgjpcTJs2TWFhYSpVqpQaNWqkjRs3erokI3zxxRfq3LmzQkJCZLPZtHz5ck+XZIzExET96U9/UtmyZRUYGKiHH35Y6enpni7LGO+++67q1q2rcuXKqVy5coqMjNSnn37q6bKMlJiYKJvNpoSEBE+XYoRRo0bJZrO5HMHBwZ4uyyjff/+9evXqpYoVK6p06dKqX7++duzY4emyjFC1atV8Pz82m039+vXzdGkel5ubq7///e8KCwuTn5+fqlWrpjFjxigvL8/TpRkjKytLCQkJuvvuu+Xn56eoqCht377d02UVu+u9/rMsS6NGjVJISIj8/PzUsmVL7d+/3zPFesD11mfp0qVq166dAgICZLPZlJaW5pE6f68I6nBavHixEhISNGLECO3atUv333+/OnTooKNHj3q6NI87f/686tWrp6lTp3q6FONs2LBB/fr1U0pKipKTk5Wbm6uYmBidP3/e06UZoXLlyho3bpxSU1OVmpqqBx54QA899NAf6n/kN2L79u2aMWOG6tat6+lSjFK7dm2dPHnSeezdu9fTJRnj7Nmzio6Olre3tz799FN9+eWXeuONN3THHXd4ujQjbN++3eVnJzk5WZL06KOPergyzxs/frymT5+uqVOn6sCBA5owYYImTpyoKVOmeLo0Yzz99NNKTk7WvHnztHfvXsXExKhNmzb6/vvvPV1asbre678JEybozTff1NSpU7V9+3YFBwerbdu2ysrKKuZKPeN663P+/HlFR0dr3LhxxVzZbcIC/k+TJk2sZ5991qWtVq1a1tChQz1UkZkkWcuWLfN0GcY6ffq0JcnasGGDp0sxVvny5a1//etfni7DGFlZWVaNGjWs5ORkq0WLFtYLL7zg6ZKMMHLkSKtevXqeLsNYQ4YMsf785z97uozfjRdeeMGqXr26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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_importances(range(12),np.mean(cond_vals, axis=0),title=\"Average Neuron Importances\", axis_title=\"Neurons\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also look at the distribution of each neuron's attributions. Below we look at the distributions for neurons 7 and 9, and we can confirm that their attribution distributions are very close to 0, suggesting they are not learning substantial features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAApdUlEQVR4nO3deXxU1cH/8e+wTRZCCGAyRFIWHwohERUQMBQT0bAJRVGpbIJKy2pZ2iIUlEBrWHzJg0qBBx5EqgY3rNIWBSpCLQk2YJEliFJZIhBSMCRUaALk/P7wl3kYJoRMmJxM4uf9et3Xyzlz7j3n3EOSr/eeO+MwxhgBAABYUquqOwAAAL5fCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfwBVefvllORwOBQUF6ciRI17vJyUlKT4+vgp6ZpcxRi+88ILatm0rp9Oppk2bauzYscrLyyvX/i1atJDD4ZDD4VCtWrUUHh6u2NhYPfLII9q4cWOp+zgcDqWkpPjUz/Xr1/u8T2ltlcz7jh07fD7W1Rw/flwpKSnatWuX13spKSlyOBx+awuoTggfwFUUFhZq5syZVd2NKvPLX/5SkydP1oABA/SnP/1J06ZNU1pampKTk3XhwoVyHaNbt27KyMhQenq61q5dqwkTJujQoUPq1auXHnzwQa/jZGRkaNSoUT71c/369Zo9e7ZP+1S0LV8dP35cs2fPLjV8jBo1ShkZGZXaPhCoCB/AVfTu3VtpaWn67LPPqrorkqQLFy7o4sWLVto6duyYnn/+eY0fP17z589XcnKyJk6cqGXLlmnnzp16+eWXy3Wchg0bqmvXruratavuuecejR8/Xh9//LFmzZqltWvXeoW7rl27qlmzZpUwou8YY3T+/HkrbV1Ls2bN1LVr1yprH6hKhA/gKqZOnarGjRvrySefvGZdY4yWLFmiW2+9VcHBwYqIiNCDDz6or776yqNeixYtNHLkSK/9k5KSlJSU5H69ZcsWORwOvfLKK/rFL36hG2+8UU6nUwcPHpQkvfTSS7rlllsUFBSkRo0a6f7779f+/fs9jjly5EjVr19fBw8eVN++fVW/fn3FxMToF7/4hQoLC8scz/bt23Xp0iX17dvXo7xfv36SpLVr117znJQlJSVFcXFxWrx4sf7zn/+4y6+8FXLu3Dn98pe/VMuWLd1j7dSpk9asWeMe4+9+9zv3viXb4cOH3WUTJkzQsmXLFBsbK6fTqdWrV5faVom8vDw9+uijatSokUJDQ9W/f/8KzeOWLVt0++23S5IeffRRd99K2izttktxcbEWLFjgvtUVGRmpRx55RF9//bVXO/Hx8crMzFT37t0VEhKiVq1aad68eSouLr76iQcCBOEDuIqwsDDNnDlTGzZs0ObNm8usO3r0aE2aNEn33HOP3n33XS1ZskT79u1TQkKCTp48WeE+TJ8+XUePHtWyZcv0xz/+UZGRkZo7d64ef/xxxcXF6Z133tHzzz+v3bt364477tCXX37psf+FCxf04x//WHfffbfee+89PfbYY/rv//5vzZ8/v8x2i4qKJElOp9OjvG7dunI4HNq9e3eFx1Sif//+OnfuXJlrLKZMmaKlS5fq5z//uT744AO98soreuihh3T69GlJ0lNPPaUHH3xQ0ne3UUq2pk2buo/x7rvvaunSpXr66ae1YcMGde/evcx+Pf7446pVq5bS0tK0aNEi/f3vf1dSUpLOnDnj0/g6dOigVatWSZJmzpzp7ltZt3rGjh2rJ598UsnJyVq3bp1+85vf6IMPPlBCQoJOnTrlUTcnJ0dDhw7VsGHDtG7dOvXp00fTp0/Xq6++6lM/gSphAHhYtWqVkWQyMzNNYWGhadWqlenUqZMpLi42xhiTmJho4uLi3PUzMjKMJPPcc895HCc7O9sEBwebqVOnusuaN29uRowY4dVmYmKiSUxMdL/+6KOPjCRz5513etTLy8szwcHBpm/fvh7lR48eNU6n0wwZMsRdNmLECCPJvPnmmx51+/bta9q0aVPmOdi1a5eRZH7zm994lH/44YdGkqlXr16Z+xvz3Vjvvffeq76/dOlSI8m88cYb7jJJZtasWe7X8fHx5r777iuznfHjx5ur/SqTZMLDw80333xT6nuXt1Uy7/fff79HvW3bthlJ5re//a3H2Mozj5mZmUaSWbVqlVfdWbNmefR7//79RpIZN26cR71PPvnESDK//vWvPdqRZD755BOPuu3atTO9evXyagsINFz5AMpQr149/fa3v9WOHTv05ptvllrnT3/6kxwOh4YNG6aLFy+6N5fLpVtuuUVbtmypcPsPPPCAx+uMjAydP3/e65J/TEyMevTooQ8//NCj3OFwqH///h5l7du3L/UpnsvdcsstuvPOO/Xss8/qrbfe0pkzZ5Senq4xY8aodu3aqlXr+n91GGOuWadz5856//33NW3aNG3ZssW9XsMXPXr0UERERLnrDx061ON1QkKCmjdvro8++sjntn1Rcvwr57Zz586KjY31mluXy6XOnTt7lJVnboFAQPgAruHhhx9Whw4dNGPGjFKf8jh58qSMMYqKilLdunU9tu3bt3tdLvfF5bcPJLlvN1xZLknR0dHu90uEhIQoKCjIo8zpdHqss7iat956S926ddOgQYMUERGhu+66SwMHDtStt96qG2+80deheCn5IxkdHX3VOi+88IKefPJJvfvuu7rrrrvUqFEj3XfffV63l8pS2rkqi8vlKrXsynPrb77ObePGjb3qOZ3OCgU0wLY6Vd0BINA5HA73Ex/Lly/3er9JkyZyOBz6+OOPvdZISJ7rJoKCgkpd7Hnq1Ck1adKk1LYvV/IH58SJE151jx8/XuoxKioyMlLr169Xbm6ucnJy1Lx5cwUHB2vJkiXudRYVZYzRH//4R4WGhqpTp05XrRcaGqrZs2dr9uzZOnnypPsqSP/+/fX555+Xqy1fP0sjJyen1LL/+q//cr/2dR7L4/K5vfIpHH/PLVDVuPIBlMM999yj5ORkzZkzR//+97893uvXr5+MMTp27Jg6derktd18883uui1atPBarPnFF1/owIED5erHHXfcoeDgYK9FhV9//bU2b96su+++u4IjvLrIyEi1b99e4eHhWrZsmb799ltNmDDhuo45e/ZsZWVlaeLEiV5XZq4mKipKI0eO1ODBg3XgwAGdO3dO0v+FO3/9H/9rr73m8To9PV1HjhzxeBqpvPPoS9969OghSV5zm5mZqf3791fK3AJVhSsfQDnNnz9fHTt2VG5uruLi4tzl3bp1089+9jM9+uij2rFjh+68806FhobqxIkT+tvf/qabb75ZY8eOlSQNHz5cw4YN07hx4/TAAw/oyJEjWrBggW644YZy9aFhw4Z66qmn9Otf/1qPPPKIBg8erNOnT2v27NkKCgrSrFmz/DbeFStWSJJuuukmnTlzRu+//75Wrlyp1NRUdejQoVzHOHPmjLZv3y5J+vbbb3XgwAG9/vrr+vjjjzVo0KBrfjhYly5d1K9fP7Vv314RERHav3+/XnnlFd1xxx0KCQmRJHe4mz9/vvr06aPatWurffv2qlevXoXGvWPHDo0aNUoPPfSQsrOzNWPGDN14440aN26cu0555/Gmm25ScHCwXnvtNcXGxqp+/fqKjo4u9VZTmzZt9LOf/UwvvviiatWqpT59+ujw4cN66qmnFBMTo8mTJ1doPEBAqtr1rkDgufxplysNGTLESPJ42qXESy+9ZLp06WJCQ0NNcHCwuemmm8wjjzxiduzY4a5TXFxsFixYYFq1amWCgoJMp06dzObNm6/6tMtbb71Vah//93//17Rv397Uq1fPhIeHmwEDBph9+/Z51BkxYoQJDQ312vfKpyyu5n/+539MbGysCQkJMfXr1zfdu3c377777jX3K9G8eXMjyUgyDofD1K9f37Rp08YMHz7cbNiwodR9dMUTKNOmTTOdOnUyERERxul0mlatWpnJkyebU6dOuesUFhaaUaNGmRtuuME4HA4jyRw6dMh9vPHjx5errZJ537hxoxk+fLhp2LCh+8miL7/80mPf8s6jMcasWbPGtG3b1tStW9ejzdLm4dKlS2b+/Pnmhz/8oalbt65p0qSJGTZsmMnOzvaod+UTVyVGjBhhmjdvXup4gUDiMKYcS84BAAD8hDUfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALAq4D5krLi4WMePH1dYWJjPH4sMAACqhjFGZ8+eVXR09DW/fDLgwsfx48cVExNT1d0AAAAVkJ2d7fX9RFcKuPARFhYm6bvON2jQoIp7AwAAyqOgoEAxMTHuv+NlCbjwUXKrpUGDBoQPAACqmfIsmWDBKQAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArKpT1R0AAAD+02Lanz1eH553bxX15Oq48gEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAq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can1a6qCggLFxMQoOztbDRo0qOrufO8xH4GHOQk8zElgqer5MMbo7Nmzio6OvmZdv4ePJk2aqHbt2srJyfEoz83NVVRUlFd9p9Mpp9PpUdawYUN/d6vaaNCgAT/EAYT5CDzMSeBhTgJLVc5HeHh4uer5fcFpvXr11LFjR23atMmjfNOmTUpISPB3cwAAoJqplNsuU6ZM0fDhw9WpUyfdcccdWr58uY4ePaoxY8ZURnMAAKAaqZTw8ZOf/ESnT5/WnDlzdOLECcXHx2v9+vVq3rx5ZTRXIzidTs2aNcvrFhSqBvMReJiTwMOcBJbqNB8OY8rzTAwAAIB/8N0uAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwocf5OXlafjw4QoPD1d4eLiGDx+uM2fOlLmPMUYpKSmKjo5WcHCwkpKStG/fPo86hYWFeuKJJ9SkSROFhobqxz/+sb7++muf287MzNTdd9+thg0bKiIiQj179tSuXbv8MPLAFehzIkkvv/yy2rdvr6CgILlcLk2YMOF6hx2wqsN8SNLp06fVrFkzORyOa/avugvkOfnss880ePBgxcTEKDg4WLGxsXr++ef9NfSAsWTJErVs2VJBQUHq2LGjPv744zLrb926VR07dlRQUJBatWqlZcuWedVZu3at2rVrJ6fTqXbt2ukPf/iDz+2WZ56v2/V+kRyM6d27t4mPjzfp6ekmPT3dxMfHm379+pW5z7x580xYWJhZu3at2bNnj/nJT35imjZtagoKCtx1xowZY2688UazadMm8+mnn5q77rrL3HLLLebixYvlbrugoMBERESYkSNHms8//9zs3bvXPPDAAyYyMtIUFRX5/2QEiECeE2OMee6550x0dLR57bXXzMGDB83evXvNunXr/HsSAkigz0eJAQMGmD59+hhJJi8vzy9jD1SBPCcrV640TzzxhNmyZYv55z//aV555RUTHBxsXnzxRf+fiCry+uuvm7p165oVK1aYrKwsM3HiRBMaGmqOHDlSav2vvvrKhISEmIkTJ5qsrCyzYsUKU7duXfP222+766Snp5vatWub1NRUs3//fpOammrq1Kljtm/f7lO75Znn60X4uE5ZWVlGksfkZmRkGEnm888/L3Wf4uJi43K5zLx589xl//nPf0x4eLhZtmyZMcaYM2fOmLp165rXX3/dXefYsWOmVq1a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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(cond_vals[:,9], 100);\n",
    "plt.title(\"Neuron 9 Distribution\")\n",
    "plt.figure()\n",
    "plt.hist(cond_vals[:,7], 100);\n",
    "plt.title(\"Neuron 7 Distribution\");\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we can look at the distributions of neurons 0 and 10, which appear to be learning strong features negatively correlated with survival."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtnUlEQVR4nO3dfVxVZb7///cudQsIaJp7S5FgUZo3TWmhNAaVUGp2YzenMLIbz1jYt6GaUYnKbadAmRmjE5M97JQxNWSdkzndmjSl1YAFppOjZnVCpXRHGgElgcr1+6Mf+7gFjc3NhZtez8djPR7ta11rrc/al8C7a6+1l8MYYwQAAGDJMV1dAAAA+GUhfAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAh3j66aflcDjUu3dvbd++vdn6pKQkjRgxogsqs++jjz7ShAkT1KdPH/Xt21dTp07VF1980aptY2Ji5HA45HA4dMwxxygyMlLDhg3TDTfcoFWrVrW4jcPhkMfjCajG119/PeBtWjpW07iXlZUFvK/D2blzpzwejzZs2NBsncfjkcPh6LBjAcGE8AEcRn19ve69996uLqPLfPLJJ0pKSlJDQ4NeeOEFPfXUU/r00081fvx4ffPNN63ax7nnnquSkhIVFxfrxRdf1O23367y8nJddNFFuuqqq7Rv3z6//iUlJZoxY0ZAdb7++uuaP39+QNu09ViB2rlzp+bPn99i+JgxY4ZKSko69fjA0YrwARzGxRdfrMLCQv3zn//s6lIkSfv27dP+/futHe/++++X0+nUq6++qkmTJmnq1Kl67bXX9M033+iPf/xjq/bRt29fjR07VmPHjtWECRM0a9Ysvffee5o3b55efPHFZuFu7NixOvHEEzvjdCRJxhjV1dVZOdbPOfHEEzV27NguOz7QlQgfwGHMnj1b/fv315w5c362rzFGjz32mH71q18pJCRE/fr101VXXdXsI4qYmBjdeOONzbZPSkpSUlKS7/Xq1avlcDj0zDPP6O6779YJJ5wgp9Opzz//XJL01FNP6YwzzlDv3r113HHH6YorrtCWLVv89nnjjTeqT58++vzzzzVp0iT16dNH0dHRuvvuu1VfX3/E89m/f79effVVXXnllYqIiPC1Dx48WOeff75eeumln31PjsTj8Wj48OHKz8/Xjz/+6Gs/9KOQvXv36ne/+51iY2N95zpmzBg999xzvnP885//7Nu2adm2bZuv7fbbb9fjjz+uYcOGyel0qqCgoMVjNamqqtJNN92k4447TmFhYZoyZUqbxnH16tU6++yzJUk33XSTr7amY7b0sUtjY6Nyc3M1dOhQOZ1ODRw4UDfccIO+/PLLZscZMWKESktLNX78eIWGhmrIkCFasGCBGhsbD//GA0cJwgdwGOHh4br33nv15ptv6u233z5i35kzZyojI0MTJkzQihUr9Nhjj2nTpk1KSEjQ119/3eYaMjMztWPHDj3++ON65ZVXNHDgQOXk5OiWW27R8OHDtXz5cj3yyCP6+OOPNW7cOH322Wd+2+/bt0+XXnqpLrzwQv3tb3/TzTffrIcfflgLFy484nH/93//V3V1dRo1alSzdaNGjdLnn3/uFxraYsqUKdq7d+8Rr7G46667tHjxYt1xxx1auXKlnnnmGV199dXas2ePJOm+++7TVVddJemnj1GalkGDBvn2sWLFCi1evFj333+/3nzzTY0fP/6Idd1yyy065phjVFhYqLy8PH344YdKSkrSd999F9D5nXXWWVq6dKkk6d577/XVdqSPem677TbNmTNHycnJevnll/Uf//EfWrlypRISErR7926/vl6vV9OmTdP111+vl19+WRMnTlRmZqaeffbZgOoEuoQB4Gfp0qVGkiktLTX19fVmyJAhZsyYMaaxsdEYY0xiYqIZPny4r39JSYmRZP70pz/57aeiosKEhISY2bNn+9oGDx5spk+f3uyYiYmJJjEx0ff6nXfeMZLMeeed59evqqrKhISEmEmTJvm179ixwzidTpOamuprmz59upFkXnjhBb++kyZNMqeddtoR34N//OMfRpJ57rnnmq3Lzs42kszOnTuPuI/BgwebyZMnH3b94sWLjSTz/PPP+9okmXnz5vlejxgxwlx++eVHPM6sWbPM4X6VSTKRkZHm22+/bXHdwcdqGvcrrrjCr1/Te/Hggw/6nVtrxrG0tNRIMkuXLm3Wd968eX51b9myxUgy6enpfv0++OADI8ncc889fseRZD744AO/vqeffrq56KKLmh0LONow8wEcQa9evfTggw+qrKxML7zwQot9Xn31VTkcDl1//fXav3+/b3G73TrjjDO0evXqNh//yiuv9HtdUlKiurq6ZlP+0dHRuuCCC/T3v//dr93hcGjKlCl+baNGjWrxLp6WHOlujPbeqWGM+dk+55xzjt544w3NnTtXq1ev9l2vEYgLLrhA/fr1a3X/adOm+b1OSEjQ4MGD9c477wR87EA07f/QsT3nnHM0bNiwZmPrdrt1zjnn+LUFMrZAVyJ8AD/j2muv1VlnnaWsrKxmd2dI0tdffy1jjFwul3r27Om3rF27ttl0eSAO/vhAku/jhkPbJSkqKsq3vkloaKh69+7t1+Z0On/2I5P+/fv7He9g3377rRwOh/r27fuz9R9J0x/JqKiow/b5z//8T82ZM0crVqzQ+eefr+OOO06XX355s4+XjqSl9+pI3G53i20tvRcdKdCxbRqjgzmdzjYFNMC2Hl1dAHC0czgcWrhwoZKTk7VkyZJm6wcMGCCHw6H33ntPTqez2fqD23r37t3ixZ67d+/WgAEDWjz2wZr+4OzatatZ3507d7a4j7Y4+eSTFRISoo0bNzZbt3HjRp1yyinNQk0gjDF65ZVXFBYWpjFjxhy2X1hYmObPn6/58+fr66+/9s2CTJkyRZ988kmrjhXoDI3X622x7ZRTTvG9DnQcW+PgsT30LpyOHFvgaMDMB9AKEyZMUHJysh544AF9//33fusuueQSGWP01VdfacyYMc2WkSNH+vrGxMTo448/9tv+008/1datW1tVx7hx4xQSEtLsosIvv/xSb7/9ti688MI2nqG/Hj16aMqUKVq+fLlqa2t97Tt27NA777yjqVOntmv/8+fP1+bNm/Xb3/621SHG5XLpxhtv1HXXXaetW7dq7969kv4v3HXU//H/9a9/9XtdXFys7du3+92N1NpxDKS2Cy64QJKajW1paam2bNnSYWMLHA2Y+QBaaeHChRo9erQqKys1fPhwX/u5556r3/zmN7rppptUVlam8847T2FhYdq1a5fef/99jRw5UrfddpskKS0tTddff73S09N15ZVXavv27crNzdXxxx/fqhr69u2r++67T/fcc49uuOEGXXfdddqzZ4/mz5+v3r17a968eR12vvPnz9fZZ5+tSy65RHPnztWPP/6o+++/XwMGDNDdd9/dqn189913Wrt2rSTphx9+0NatW7Vs2TK99957uuaaa372y8Hi4+N1ySWXaNSoUerXr5+2bNmiZ555RuPGjVNoaKgk+cLdwoULNXHiRB177LEaNWqUevXq1abzLisr04wZM3T11VeroqJCWVlZOuGEE5Senu7r09pxbJpB+utf/6phw4apT58+ioqKavGjptNOO02/+c1v9Oijj+qYY47RxIkTtW3bNt13332Kjo7WnXfe2abzAY5KXXu9K3D0Ofhul0OlpqYaSX53uzR56qmnTHx8vAkLCzMhISHm5JNPNjfccIMpKyvz9WlsbDS5ublmyJAhpnfv3mbMmDHm7bffPuzdLv/93//dYo3/9V//ZUaNGmV69eplIiMjzWWXXWY2bdrk12f69OkmLCys2baH3mVxJGVlZebCCy80oaGhJiIiwlx++eXm888/b9W2gwcPNpKMJONwOEyfPn3MaaedZtLS0sybb77Z4jY65A6UuXPnmjFjxph+/foZp9NphgwZYu68806ze/duX5/6+nozY8YMc/zxxxuHw2EkmfLyct/+Zs2a1apjNY37qlWrTFpamunbt6/vzqLPPvvMb9vWjqMxxjz33HNm6NChpmfPnn7HbGkcDhw4YBYuXGhOPfVU07NnTzNgwABz/fXXm4qKCr9+h95x1WT69Olm8ODBLZ4vcDRxGNOKS84BAAA6CNd8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMCqo+5LxhobG7Vz506Fh4e3+8FVAADADmOMamtrFRUVpWOOOfLcxlEXPnbu3Kno6OiuLgMAALRBRUVFs+cTHeqoCx/h4eGSfio+IiKii6sBAACtUVNTo+joaN/f8SM56sJH00ctERERhA8AAIJMay6Z4IJTAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGAV4QMAAFgVUPjYv3+/7r33XsXGxiokJERDhgzRAw88oMbGRl8fY4w8Ho+ioqIUEhKipKQkbdq0qcMLBwAAwSmg8LFw4UI9/vjjys/P15YtW5Sbm6s//OEPevTRR319cnNztWjRIuXn56u0tFRut1vJycmqra3t8OIBAEDwCSh8lJSU6LLLLtPkyZMVExOjq666SikpKSorK5P006xHXl6esrKyNHXqVI0YMUIFBQXau3evCgsLO+UEAABAcAkofPz617/W3//+d3366aeSpH/+8596//33NWnSJElSeXm5vF6vUlJSfNs4nU4lJiaquLi4xX3W19erpqbGbwEAAN1XQF+vPmfOHFVXV2vo0KE69thjdeDAAT300EO67rrrJEler1eS5HK5/LZzuVzavn17i/vMycnR/Pnz21I7AAAIQgHNfDz//PN69tlnVVhYqI8++kgFBQX64x//qIKCAr9+h36vuzHmsN/1npmZqerqat9SUVER4CkAAIBgEtDMx+9//3vNnTtX1157rSRp5MiR2r59u3JycjR9+nS53W5JP82ADBo0yLddZWVls9mQJk6nU06ns631AwCAIBPQzMfevXt1zDH+mxx77LG+W21jY2PldrtVVFTkW9/Q0KA1a9YoISGhA8oFAADBLqCZjylTpuihhx7SSSedpOHDh2v9+vVatGiRbr75Zkk/fdySkZGh7OxsxcXFKS4uTtnZ2QoNDVVqamqnnAAAADi8mLmvNWvbtmByF1TyfwIKH48++qjuu+8+paenq7KyUlFRUZo5c6buv/9+X5/Zs2errq5O6enpqqqqUnx8vFatWqXw8PAOLx4AAAQfhzHGdHURB6upqVFkZKSqq6sVERHR1eUAABDUbM18BPL3m2e7AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwKqAwkdMTIwcDkezZdasWZIkY4w8Ho+ioqIUEhKipKQkbdq0qVMKBwAAwSmg8FFaWqpdu3b5lqKiIknS1VdfLUnKzc3VokWLlJ+fr9LSUrndbiUnJ6u2trbjKwcAAEEpoPBx/PHHy+12+5ZXX31VJ598shITE2WMUV5enrKysjR16lSNGDFCBQUF2rt3rwoLCw+7z/r6etXU1PgtAACg+2rzNR8NDQ169tlndfPNN8vhcKi8vFxer1cpKSm+Pk6nU4mJiSouLj7sfnJychQZGelboqOj21oSAAAIAm0OHytWrNB3332nG2+8UZLk9XolSS6Xy6+fy+XyrWtJZmamqqurfUtFRUVbSwIAAEGgR1s3fPLJJzVx4kRFRUX5tTscDr/XxphmbQdzOp1yOp1tLQMAAASZNs18bN++XW+99ZZm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w+v1auDAgc3aBw4c2OwJwgdbuHChevTooTvuuKMzy/vFaet4SNKrr76qPn36qHfv3nr44YdVVFSkAQMGdFap3V57xqLJjz/+qLlz5yo1NZUnr7ZDR4wF2mb37t06cOBAs6fHu1yuw773Xq+3xf779+/X7t27O61WifDR5TwejxwOxxGXsrIySZLD4Wi2vTGmxXZJWrdunR555BE9/fTTh+0Df505Hk3OP/98bdiwQcXFxbr44ot1zTXXqLKyslPOJ5jZGAvpp4tPr732WjU2Nuqxxx7r8PPoDmyNBdrv0Pf55977lvq31N7ROuXBcmi922+/Xddee+0R+8TExOjjjz/W119/3WzdN9980yy5NnnvvfdUWVmpk046ydd24MAB3X333crLy9O2bdvaVXt31Jnj0SQsLEynnHKKTjnlFI0dO1ZxcXF68sknlZmZ2a7auxsbY7Fv3z5dc801Ki8v19tvv82sx2HYGAu0z4ABA3Tsscc2m+WorKw87Hvvdrtb7N+jRw/179+/02qVCB9dbsCAAa2ach83bpyqq6v14Ycf6pxzzpEkffDBB6qurlZCQkKL26SlpWnChAl+bRdddJHS0tJ00003tb/4bqgzx+NwjDGqr69vU73dWWePRVPw+Oyzz/TOO+90+i/bYNYVPxcITK9evTR69GgVFRXpiiuu8LUXFRXpsssua3GbcePG6ZVXXvFrW7VqlcaMGaOePXt2ar3c7RJELr74YjNq1ChTUlJiSkpKzMiRI80ll1zi1+e0004zy5cvP+w+uNul4wQ6Ht9//73JzMw0JSUlZtu2bWbdunXmlltuMU6n0/zrX//qilPoNgIdi3379plLL73UnHjiiWbDhg1m165dvqW+vr4rTqHbaMvvqT179pj169eb1157zUgyy5YtM+vXrze7du2yXX5QW7ZsmenZs6d58sknzebNm01GRoYJCwsz27ZtM8YYM3fuXJOWlubr/8UXX5jQ0FBz5513ms2bN5snn3zS9OzZ0/zP//xPp9dK+Agie/bsMdOmTTPh4eEmPDzcTJs2zVRVVfn1kWSWLl162H0QPjpOoONRV1dnrrjiChMVFWV69eplBg0aZC699FLz4Ycf2i++mwl0LJpu6Wxpeeedd6zX35205ffU0qVLWxyLefPmWa29O/jzn/9sBg8ebHr16mXOOusss2bNGt+66dOnm8TERL/+q1evNmeeeabp1auXiYmJMYsXL7ZSp8OY///qEgAAAAu42wUAAFhF+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABWET4AAIBV/x+oL5ps9nL/FAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGxCAYAAABWRX0gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxH0lEQVR4nO3de1xVdb7/8fdWYQOG5AXZkKjkoKaoKRaCM0EppNnt2GXMS9ptNG1GujxMs47YFKZNZmdMS4+3LoydJq0my6RUag6aeBtLy2xCpRJJUiA1MP3+/vDHPm43KpuLfIXX8/FYj0f7u757rc93r73l3XevtbbDGGMEAABggUZ1XQAAAEA5ggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCRq0xYsXy+FwKCAgQHv27PFan5SUpJiYmDqo7Pz65z//qXvvvVexsbFyOp1yOBzavXv3Gfv/9a9/VefOneV0OhUVFaWpU6fq2LFj59zP2rVr5XA43Iu/v79CQ0PVt29fTZ48ucJjUH6MzlZPRdLT0/X222/79JyK9lUb74H3339faWlpFa5r3769Ro0aVaP7Ay4kBBNAUmlpqR5//PG6LqPOfPzxx/roo4/Utm1bJSQknLXv008/rfHjx2vw4MH68MMPNXbsWKWnp2vcuHGV3l96errWrVunNWvWaMGCBUpKStLChQt12WWX6fXXX/foO2jQIK1bt07h4eE+jakqwaSq+/LV+++/r6lTp1a4bvny5XriiSdqdf+A1QzQgC1atMhIMgMGDDCNGjUyW7du9VifmJhounbtet7rKisrM8eOHTtv+zt+/Lj7v5999lkjyeTm5nr1O3DggAkICDB/+MMfPNqffvpp43A4zPbt28+6nzVr1hhJ5s033/RaV1hYaHr27GmaNGlitm3bVrWBnKJp06Zm5MiRlep75MgRc+LEiQrX1cZ7YNy4cYZ/foGKMWMCSJowYYJatmypRx999Jx9jTGaM2eOLr/8cgUGBqp58+a69dZb9e2333r0O9OUfFJSkpKSktyPy7/eePXVV/Xwww/rkksukdPp1DfffCNJWrhwoXr06KGAgAC1aNFC//Ef/6Evv/zSY5ujRo3SRRddpG+++UbXXXedLrroIkVGRurhhx9WaWnpOcfUqFHl/ilYuXKlfvnlF911110e7XfddZeMMT7PUJyqRYsWevnll/Xrr7/q+eefd7dX9PXKli1bdP3116t169ZyOp2KiIjQoEGD9N1330mSHA6HDh8+rCVLlri/Nip/zcu3t2rVKt19990KDQ1VUFCQSktLz/q10aeffqo+ffooMDBQl1xyiZ544gkdP37cvb78OK5du9bjebt375bD4dDixYslnTxWL774orvO8qV8nxW9b/bu3avhw4e7x3vZZZfpueee04kTJ7z285e//EUzZ85UVFSULrroIsXHx2v9+vU+HAmgbhFMAEnBwcF6/PHH9eGHH2r16tVn7Tt69Gilpqaqf//+evvttzVnzhxt375dCQkJ2r9/f5VrmDRpkvbu3auXXnpJ//jHP9S6dWtNmzZN99xzj7p27aply5bphRde0LZt2xQfH69du3Z5PP/YsWO68cYb1a9fP73zzju6++679fzzz2v69OlVrul0X3zxhSSpW7duHu3h4eFq1aqVe31VXXHFFQoPD9cnn3xyxj6HDx9WcnKy9u/frxdffFGZmZmaNWuW2rZtq5KSEknSunXrFBgYqOuuu07r1q3TunXrNGfOHI/t3H333fLz89Orr76qv//97/Lz8zvjPvPz8zVkyBANGzZM77zzjm699VY99dRTGj9+vM9jfOKJJ3Trrbe66yxfzvT10Y8//qiEhAStWrVKf/7zn/Xuu++qf//+euSRR/TAAw949T/1NXn99dd1+PBhXXfddSoqKvK5VqAuNKnrAgBbjBkzRi+88IIeffRRbdiwQQ6Hw6vP+vXrNX/+fD333HN66KGH3O2/+93v1LFjR82cObPKQaBDhw5688033Y8PHTqkP//5z7ruuuuUkZHhbk9KSlJ0dLTS0tI8zscoKyvT1KlTddttt0mS+vXrp40bNyojI0P/+Z//WaWaTldYWCin06mmTZt6rWvRooUKCwurvY+2bdtq27ZtZ1z/1VdfqbCwUAsWLNBNN93kbr/99tvd/92nTx81atRIoaGh6tOnT4Xb6devn15++eVK1VRYWKh33nlHN954oyQpJSVFR48e1dy5czVhwgS1bdu2UtuRTh7nsLAwd53nMnPmTH3//ff67LPPdOWVV0qSrr32Wh0/flwvvfSSUlNT1bFjR3f/4OBgvffee2rcuLEkKSIiQldeeaU++OADDRkypNJ1AnWFGRPg//P399dTTz2ljRs36n/+538q7PPee+/J4XBo+PDh+vXXX92Ly+VSjx49vKbxfXHLLbd4PF63bp2OHj3qNa0fGRmpa665Rh9//LFHu8Ph0A033ODR1r179wqvdKmOigJbZdZVljHmrOt/85vfqHnz5nr00Uf10ksvaceOHVXaz+mv99kEBwe7Q0m5oUOH6sSJE2ed3akJq1evVpcuXdyhpNyoUaNkjPGa4Rs0aJA7lEgn3wOSavx9ANQWgglwiiFDhqhXr16aPHlyhZe/7t+/X8YYhYWFyc/Pz2NZv369Dhw4UOV9nz6VXz77UNEUf0REhNfsRFBQkAICAjzanE6nfvnllyrXdLqWLVvql19+0ZEjR7zW/fTTT2rRokW197F3715FRESccX1ISIiysrJ0+eWX67HHHlPXrl0VERGhKVOmVOqS5XK+XHlTPsNxKpfLJUk1Mkt0NoWFhWd8D1S0/5YtW3o8djqdkqSjR4/WUoVAzeKrHOAUDodD06dPV3JysubNm+e1vlWrVnI4HPr000/d/+Cf6tS2gICACk88PXDggFq1alXhvk9V/gdm3759Xn1/+OGHCrdR28rPLfn8888VFxfnbs/Pz9eBAweqfb+PDRs2KD8/X/fcc88561i6dKmMMdq2bZsWL16sJ598UoGBgZo4cWKl9uXL7E5F5w7l5+dL+r/jVB4KTz/m1Qmr5ds/03tAUp28D4DaxIwJcJr+/fsrOTlZTz75pH7++WePdddff72MMfr+++/Vu3dvr+XUk0Lbt2/vda7E119/rZ07d1aqjvj4eAUGBuq1117zaP/uu++0evVq9evXr4ojrLoBAwYoICDAfYVJufKrWW6++eYqb/unn37SmDFj5OfnpwcffLBSz3E4HOrRo4eef/55XXzxxdq8ebN7ndPprLFZgpKSEr377rsebRkZGWrUqJGuuuoqSSePtySvY37688prkyo3i9GvXz/t2LHDY2yS9Morr8jhcOjqq6+u9DiACwEzJkAFpk+frtjYWBUUFKhr167u9r59++oPf/iD7rrrLm3cuFFXXXWVmjZtqn379umf//ynunXrpvvvv1+SNGLECA0fPlxjx47VLbfcoj179mjGjBkKDQ2tVA0XX3yxnnjiCT322GO68847dccdd6iwsFBTp05VQECApkyZUmPj/fHHH5WVlSXp5GyIJH3wwQcKDQ1VaGioEhMTJZ08wfXxxx/XE088oRYtWiglJUU5OTlKS0vTvffeqy5dulRqf7t27dL69et14sQJFRYW6rPPPtOCBQtUXFysV155xeM1P917772nOXPm6Oabb9all14qY4yWLVumQ4cOKTk52d2vW7duWrt2rf7xj38oPDxcwcHB6tSpU5Ven5YtW+r+++/X3r171bFjR73//vuaP3++7r//fveJry6XS/3799e0adPUvHlztWvXTh9//LGWLVvmtb3yADt9+nQNHDhQjRs3Vvfu3eXv7+/V98EHH9Qrr7yiQYMG6cknn1S7du20YsUKzZkzR/fff7/Hia9AvVB3t1AB6l75DdZycnK81g0dOtRIqvDmWgsXLjRxcXGmadOmJjAw0HTo0MHceeedZuPGje4+J06cMDNmzDCXXnqpCQgIML179zarV682iYmJJjEx0d3vbDcdM8aY//7v/zbdu3c3/v7+JiQkxNx0001eNzIbOXKkadq0qddzp0yZUqkbeZXXUNFyaq3lXnjhBdOxY0fj7+9v2rZta6ZMmWLKysp83k+TJk1My5YtTXx8vHnsscfM7t27vZ5TfozKb/j21VdfmTvuuMN06NDBBAYGmpCQEHPllVeaxYsXezxv69atpm/fviYoKMhjHGc75qfvy5j/u8Ha2rVrTe/evY3T6TTh4eHmscce87oJ3r59+8ytt95qWrRoYUJCQszw4cPNxo0bjSSzaNEid7/S0lJz7733mtDQUONwODz22a5dO68bw+3Zs8cMHTrUtGzZ0vj5+ZlOnTqZZ5991uPGeLm5uUaSefbZZ73GJclMmTLFqx2wkcOYc5wCDwAAcJ5wjgkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDWsu8HaiRMn9MMPPyg4OLhGfhAMAADUPmOMSkpKFBERoUaNqj7vYV0w+eGHHxQZGVnXZQAAgCrIy8tTmzZtqvx864JJcHCwpJMDa9asWR1XAwAAKqO4uFiRkZHuv+NVZV0wKf/6plmzZgQTAAAuMNU9DYOTXwEAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWMOnYNK+fXs5HA6vZdy4cZJO3lwlLS1NERERCgwMVFJSkrZv314rhQMAgPrHp2CSk5Ojffv2uZfMzExJ0m233SZJmjFjhmbOnKnZs2crJydHLpdLycnJKikpqfnKAQBAveNTMAkNDZXL5XIv7733njp06KDExEQZYzRr1ixNnjxZgwcPVkxMjJYsWaIjR44oIyOjtuoHAAD1SJXPMSkrK9Nrr72mu+++Ww6HQ7m5ucrPz1dKSoq7j9PpVGJiorKzs8+4ndLSUhUXF3ssAACgYapyMHn77bd16NAhjRo1SpKUn58vSQoLC/PoFxYW5l5XkWnTpikkJMS98Ds5AAA0XFUOJgsWLNDAgQMVERHh0X76rWiNMWe9Pe2kSZNUVFTkXvLy8qpaEgAAuMBV6bdy9uzZo48++kjLli1zt7lcLkknZ07Cw8Pd7QUFBV6zKKdyOp1yOp1VKQMAANQzVZoxWbRokVq3bq1Bgwa526KiouRyudxX6kgnz0PJyspSQkJC9SsFAAD1ns8zJidOnNCiRYs0cuRINWnyf093OBxKTU1Venq6oqOjFR0drfT0dAUFBWno0KE1WjQAAKiffA4mH330kfbu3au7777ba92ECRN09OhRjR07VgcPHlRcXJxWrVql4ODgGikWgN3aT1zh1bb7mUEV9ASAijmMMaauizhVcXGxQkJCVFRUpGbNmtV1OQB8QDABGq6a+vvNb+UAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1vA5mHz//fcaPny4WrZsqaCgIF1++eXatGmTe70xRmlpaYqIiFBgYKCSkpK0ffv2Gi0aAADUTz4Fk4MHD6pv377y8/PTBx98oB07dui5557TxRdf7O4zY8YMzZw5U7Nnz1ZOTo5cLpeSk5NVUlJS07UDAIB6pokvnadPn67IyEgtWrTI3da+fXv3fxtjNGvWLE2ePFmDBw+WJC1ZskRhYWHKyMjQ6NGja6ZqAABQL/k0Y/Luu++qd+/euu2229S6dWv17NlT8+fPd6/Pzc1Vfn6+UlJS3G1Op1OJiYnKzs6ucJulpaUqLi72WAAAQMPkUzD59ttvNXfuXEVHR+vDDz/UmDFj9Kc//UmvvPKKJCk/P1+SFBYW5vG8sLAw97rTTZs2TSEhIe4lMjKyKuMAAAD1gE/B5MSJE+rVq5fS09PVs2dPjR49Wvfdd5/mzp3r0c/hcHg8NsZ4tZWbNGmSioqK3EteXp6PQwAAAPWFT8EkPDxcXbp08Wi77LLLtHfvXkmSy+WSJK/ZkYKCAq9ZlHJOp1PNmjXzWAAAQMPkUzDp27evdu7c6dH29ddfq127dpKkqKgouVwuZWZmuteXlZUpKytLCQkJNVAuAACoz3y6KufBBx9UQkKC0tPTdfvtt2vDhg2aN2+e5s2bJ+nkVzipqalKT09XdHS0oqOjlZ6erqCgIA0dOrRWBgAAAOoPn4LJFVdcoeXLl2vSpEl68sknFRUVpVmzZmnYsGHuPhMmTNDRo0c1duxYHTx4UHFxcVq1apWCg4NrvHgAAFC/OIwxpq6LOFVxcbFCQkJUVFTE+SbABab9xBVebbufGVQHlQA432rq7ze/lQMAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYw6dgkpaWJofD4bG4XC73emOM0tLSFBERocDAQCUlJWn79u01XjQAAKiffJ4x6dq1q/bt2+dePv/8c/e6GTNmaObMmZo9e7ZycnLkcrmUnJyskpKSGi0aAADUTz4HkyZNmsjlcrmX0NBQSSdnS2bNmqXJkydr8ODBiomJ0ZIlS3TkyBFlZGTUeOEAAKD+8TmY7Nq1SxEREYqKitKQIUP07bffSpJyc3OVn5+vlJQUd1+n06nExERlZ2efcXulpaUqLi72WAAAQMPkUzCJi4vTK6+8og8//FDz589Xfn6+EhISVFhYqPz8fElSWFiYx3PCwsLc6yoybdo0hYSEuJfIyMgqDAMAANQHPgWTgQMH6pZbblG3bt3Uv39/rVixQpK0ZMkSdx+Hw+HxHGOMV9upJk2apKKiIveSl5fnS0kAAKAeqdblwk2bNlW3bt20a9cu99U5p8+OFBQUeM2inMrpdKpZs2YeCwAAaJiqFUxKS0v15ZdfKjw8XFFRUXK5XMrMzHSvLysrU1ZWlhISEqpdKAAAqP+a+NL5kUce0Q033KC2bduqoKBATz31lIqLizVy5Eg5HA6lpqYqPT1d0dHRio6OVnp6uoKCgjR06NDaqh8AANQjPgWT7777TnfccYcOHDig0NBQ9enTR+vXr1e7du0kSRMmTNDRo0c1duxYHTx4UHFxcVq1apWCg4NrpXgAAFC/OIwxpq6LOFVxcbFCQkJUVFTE+SbABab9xBVebbufGVQHlQA432rq7ze/lQMAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFijSV0XAJwP7Seu8Grb/cygOqgEAHA2zJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArFGtYDJt2jQ5HA6lpqa624wxSktLU0REhAIDA5WUlKTt27dXt04AANAAVDmY5OTkaN68eerevbtH+4wZMzRz5kzNnj1bOTk5crlcSk5OVklJSbWLBQAA9VuVgsnPP/+sYcOGaf78+WrevLm73RijWbNmafLkyRo8eLBiYmK0ZMkSHTlyRBkZGTVWNAAAqJ+qFEzGjRunQYMGqX///h7tubm5ys/PV0pKirvN6XQqMTFR2dnZFW6rtLRUxcXFHgsAAGiYmvj6hKVLl2rz5s3KycnxWpefny9JCgsL82gPCwvTnj17KtzetGnTNHXqVF/LAAAA9ZBPMyZ5eXkaP368XnvtNQUEBJyxn8Ph8HhsjPFqKzdp0iQVFRW5l7y8PF9KAgAA9YhPMyabNm1SQUGBYmNj3W3Hjx/XJ598otmzZ2vnzp2STs6chIeHu/sUFBR4zaKUczqdcjqdVakdAADUMz7NmPTr10+ff/65tm7d6l569+6tYcOGaevWrbr00kvlcrmUmZnpfk5ZWZmysrKUkJBQ48UDAID6xacZk+DgYMXExHi0NW3aVC1btnS3p6amKj09XdHR0YqOjlZ6erqCgoI0dOjQmqsaAADUSz6f/HouEyZM0NGjRzV27FgdPHhQcXFxWrVqlYKDg2t6VwAAoJ6pdjBZu3atx2OHw6G0tDSlpaVVd9MAAKCB4bdyAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAazSp6wKA6mo/cUVdlwAAqCHMmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACs4VMwmTt3rrp3765mzZqpWbNmio+P1wcffOBeb4xRWlqaIiIiFBgYqKSkJG3fvr3GiwYAAPWTT8GkTZs2euaZZ7Rx40Zt3LhR11xzjW666SZ3+JgxY4Zmzpyp2bNnKycnRy6XS8nJySopKamV4gEAQP3iUzC54YYbdN1116ljx47q2LGjnn76aV100UVav369jDGaNWuWJk+erMGDBysmJkZLlizRkSNHlJGRUVv1AwCAeqTK55gcP35cS5cu1eHDhxUfH6/c3Fzl5+crJSXF3cfpdCoxMVHZ2dln3E5paamKi4s9FgAA0DD5HEw+//xzXXTRRXI6nRozZoyWL1+uLl26KD8/X5IUFhbm0T8sLMy9riLTpk1TSEiIe4mMjPS1JAAAUE/4HEw6deqkrVu3av369br//vs1cuRI7dixw73e4XB49DfGeLWdatKkSSoqKnIveXl5vpYEAADqiSa+PsHf31+/+c1vJEm9e/dWTk6OXnjhBT366KOSpPz8fIWHh7v7FxQUeM2inMrpdMrpdPpaBgAAqIeqfR8TY4xKS0sVFRUll8ulzMxM97qysjJlZWUpISGhursBAAANgE8zJo899pgGDhyoyMhIlZSUaOnSpVq7dq1Wrlwph8Oh1NRUpaenKzo6WtHR0UpPT1dQUJCGDh1aW/UDAIB6xKdgsn//fo0YMUL79u1TSEiIunfvrpUrVyo5OVmSNGHCBB09elRjx47VwYMHFRcXp1WrVik4OLhWigcAAPWLT8FkwYIFZ13vcDiUlpamtLS06tQEAAAaKH4rBwAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALCGT8Fk2rRpuuKKKxQcHKzWrVvr5ptv1s6dOz36GGOUlpamiIgIBQYGKikpSdu3b6/RogEAQP3kUzDJysrSuHHjtH79emVmZurXX39VSkqKDh8+7O4zY8YMzZw5U7Nnz1ZOTo5cLpeSk5NVUlJS48UDAID6pYkvnVeuXOnxeNGiRWrdurU2bdqkq666SsYYzZo1S5MnT9bgwYMlSUuWLFFYWJgyMjI0evTomqscAADUO9U6x6SoqEiS1KJFC0lSbm6u8vPzlZKS4u7jdDqVmJio7OzsCrdRWlqq4uJijwUAADRMVQ4mxhg99NBD+u1vf6uYmBhJUn5+viQpLCzMo29YWJh73emmTZumkJAQ9xIZGVnVkgAAwAWuysHkgQce0LZt2/S3v/3Na53D4fB4bIzxais3adIkFRUVuZe8vLyqlgQAAC5wPp1jUu6Pf/yj3n33XX3yySdq06aNu93lckk6OXMSHh7ubi8oKPCaRSnndDrldDqrUgYAAKhnfJoxMcbogQce0LJly7R69WpFRUV5rI+KipLL5VJmZqa7raysTFlZWUpISKiZigEAQL3l04zJuHHjlJGRoXfeeUfBwcHu80ZCQkIUGBgoh8Oh1NRUpaenKzo6WtHR0UpPT1dQUJCGDh1aKwMAAAD1h0/BZO7cuZKkpKQkj/ZFixZp1KhRkqQJEybo6NGjGjt2rA4ePKi4uDitWrVKwcHBNVIwAACov3wKJsaYc/ZxOBxKS0tTWlpaVWsCAAANFL+VAwAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYIJAACwBsEEAABYg2ACAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGCNJnVdAGCL9hNXeLXtfmZQHVQCAA0XMyYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBrc+RVW426sF77TjyHHD8DZMGMCAACsQTABAADWIJgAAABrEEwAAIA1CCYAAMAaBBMAAGANggkAALAGwQQAAFiDYAIAAKzBnV8BH3AnWgCoXcyYAAAAaxBMAACANQgmAADAGgQTAABgDU5+xTnxs/Vnx+sDADXH5xmTTz75RDfccIMiIiLkcDj09ttve6w3xigtLU0REREKDAxUUlKStm/fXlP1AgCAesznYHL48GH16NFDs2fPrnD9jBkzNHPmTM2ePVs5OTlyuVxKTk5WSUlJtYsFAAD1m89f5QwcOFADBw6scJ0xRrNmzdLkyZM1ePBgSdKSJUsUFhamjIwMjR49unrVAgCAeq1GT37Nzc1Vfn6+UlJS3G1Op1OJiYnKzs6u8DmlpaUqLi72WAAAQMNUoye/5ufnS5LCwsI82sPCwrRnz54KnzNt2jRNnTq1JssAKqWiu7gCAOpWrVwu7HA4PB4bY7zayk2aNElFRUXuJS8vrzZKAgAAF4AanTFxuVySTs6chIeHu9sLCgq8ZlHKOZ1OOZ3OmiwDAABcoGp0xiQqKkoul0uZmZnutrKyMmVlZSkhIaEmdwUAAOohn2dMfv75Z33zzTfux7m5udq6datatGihtm3bKjU1Venp6YqOjlZ0dLTS09MVFBSkoUOH1mjhAACg/vE5mGzcuFFXX321+/FDDz0kSRo5cqQWL16sCRMm6OjRoxo7dqwOHjyouLg4rVq1SsHBwTVXNeotTkgFgIbN52CSlJQkY8wZ1zscDqWlpSktLa06dQEAgAaIH/EDAADWIJgAAABrEEwAAIA1avQ+JsDZnH5i6+5nBtVRJZXHybgAcH4xYwIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBpclQOgQhfiVVQALnzMmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA1Ofm3gOMGx5lXmNvb15XXmlv0AahozJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1iCYAAAAaxBMAACANQgmAADAGtz59QJQ0d01bbtzaFXuIMtdQz1xF14AYMYEAABYhGACAACsQTABAADWIJgAAABrcPJrPXE+T5Ct65NW63r/NaGqY+AEWQD1HTMmAADAGgQTAABgDYIJAACwBsEEAABYo8Gd/FrVk0QvxBMu6/JurBfi62Wb2nwN6/Ik2sqMi5N6gYaLGRMAAGANggkAALAGwQQAAFiDYAIAAKzR4E5+rciFeDfNqpwYyQmp9U9lTuauzHHnvQHUX+fzzuA1odZmTObMmaOoqCgFBAQoNjZWn376aW3tCgAA1BO1EkzeeOMNpaamavLkydqyZYt+97vfaeDAgdq7d29t7A4AANQTtRJMZs6cqXvuuUf33nuvLrvsMs2aNUuRkZGaO3dubewOAADUEzV+jklZWZk2bdqkiRMnerSnpKQoOzvbq39paalKS0vdj4uKiiRJxcXFNV2aJOlE6ZFz9qlo35V5HmCD09+/NfXePZ+fi9r6/AMNUUWf09r4jJVv0xhTre3UeDA5cOCAjh8/rrCwMI/2sLAw5efne/WfNm2apk6d6tUeGRlZ06VVWsisOts1UG219f49n58LPoNA7arNz1hJSYlCQkKq/PxauyrH4XB4PDbGeLVJ0qRJk/TQQw+5H584cUI//fSTWrZsWWH/+qC4uFiRkZHKy8tTs2bN6rqc86YhjrshjllqmONuiGOWGua4G+KYpXOP2xijkpISRUREVGs/NR5MWrVqpcaNG3vNjhQUFHjNokiS0+mU0+n0aLv44otruiwrNWvWrEG9qcs1xHE3xDFLDXPcDXHMUsMcd0Mcs3T2cVdnpqRcjZ/86u/vr9jYWGVmZnq0Z2ZmKiEhoaZ3BwAA6pFa+SrnoYce0ogRI9S7d2/Fx8dr3rx52rt3r8aMGVMbuwMAAPVErQST3//+9yosLNSTTz6pffv2KSYmRu+//77atWtXG7u74DidTk2ZMsXrK6z6riGOuyGOWWqY426IY5Ya5rgb4pil8zduh6nudT0AAAA1hB/xAwAA1iCYAAAAaxBMAACANQgmAADAGgQTAABgDYJJLTl48KBGjBihkJAQhYSEaMSIETp06NBZn+NwOCpcnn32WXefpKQkr/VDhgyp5dFUTlXGPGrUKK/x9OnTx6NPaWmp/vjHP6pVq1Zq2rSpbrzxRn333Xe1OBLf+DruY8eO6dFHH1W3bt3UtGlTRURE6M4779QPP/zg0c+mYz1nzhxFRUUpICBAsbGx+vTTT8/aPysrS7GxsQoICNCll16ql156yavPW2+9pS5dusjpdKpLly5avnx5bZVfZb6Me9myZUpOTlZoaKiaNWum+Ph4ffjhhx59Fi9eXOFn/JdffqntoVSaL2Neu3ZtheP56quvPPrVt2Nd0b9bDodDXbt2dfex/Vh/8sknuuGGGxQRESGHw6G33377nM85b59rg1oxYMAAExMTY7Kzs012draJiYkx119//Vmfs2/fPo9l4cKFxuFwmH//+9/uPomJiea+++7z6Hfo0KHaHk6lVGXMI0eONAMGDPAYT2FhoUefMWPGmEsuucRkZmaazZs3m6uvvtr06NHD/Prrr7U5nErzddyHDh0y/fv3N2+88Yb56quvzLp160xcXJyJjY316GfLsV66dKnx8/Mz8+fPNzt27DDjx483TZs2NXv27Kmw/7fffmuCgoLM+PHjzY4dO8z8+fONn5+f+fvf/+7uk52dbRo3bmzS09PNl19+adLT002TJk3M+vXrz9ewzsnXcY8fP95Mnz7dbNiwwXz99ddm0qRJxs/Pz2zevNndZ9GiRaZZs2Zen3Vb+DrmNWvWGElm586dHuM59bNZH4/1oUOHPMabl5dnWrRoYaZMmeLuY/uxfv/9983kyZPNW2+9ZSSZ5cuXn7X/+fxcE0xqwY4dO4wkj4Oxbt06I8l89dVXld7OTTfdZK655hqPtsTERDN+/PiaKrXGVHXMI0eONDfddNMZ1x86dMj4+fmZpUuXutu+//5706hRI7Ny5coaqb06aupYb9iwwUjy+IfQlmN95ZVXmjFjxni0de7c2UycOLHC/hMmTDCdO3f2aBs9erTp06eP+/Htt99uBgwY4NHn2muvNUOGDKmhqqvP13FXpEuXLmbq1Knux4sWLTIhISE1VWKN83XM5cHk4MGDZ9xmQzjWy5cvNw6Hw+zevdvdZvuxPlVlgsn5/FzzVU4tWLdunUJCQhQXF+du69Onj0JCQpSdnV2pbezfv18rVqzQPffc47Xu9ddfV6tWrdS1a1c98sgjKikpqbHaq6o6Y167dq1at26tjh076r777lNBQYF73aZNm3Ts2DGlpKS42yIiIhQTE1Pp17I21cSxlqSioiI5HA6vH7Cs62NdVlamTZs2ebz+kpSSknLG8a1bt86r/7XXXquNGzfq2LFjZ+1jwzGVqjbu0504cUIlJSVq0aKFR/vPP/+sdu3aqU2bNrr++uu1ZcuWGqu7Oqoz5p49eyo8PFz9+vXTmjVrPNY1hGO9YMEC9e/f3+vu5rYe66o4n5/rWrklfUOXn5+v1q1be7W3bt3a61eXz2TJkiUKDg7W4MGDPdqHDRumqKgouVwuffHFF5o0aZL+9a9/ef1o4vlW1TEPHDhQt912m9q1a6fc3Fw98cQTuuaaa7Rp0yY5nU7l5+fL399fzZs393heWFhYpV/L2lQTx/qXX37RxIkTNXToUI9f7LThWB84cEDHjx/3+mXws73++fn5Ffb/9ddfdeDAAYWHh5+xjw3HVKrauE/33HPP6fDhw7r99tvdbZ07d9bixYvVrVs3FRcX64UXXlDfvn31r3/9S9HR0TU6Bl9VZczh4eGaN2+eYmNjVVpaqldffVX9+vXT2rVrddVVV0k68/uhvhzrffv26YMPPlBGRoZHu83HuirO5+eaYOKDtLQ0TZ069ax9cnJyJJ08kfV0xpgK2yuycOFCDRs2TAEBAR7t9913n/u/Y2JiFB0drd69e2vz5s3q1atXpbbti9oe8+9//3v3f8fExKh3795q166dVqxY4RXKfNludZ2vY33s2DENGTJEJ06c0Jw5czzWne9jfTanj+Vc46uo/+ntvm6zLlS1xr/97W9KS0vTO++84xFc+/Tp43Fyd9++fdWrVy/99a9/1X/913/VXOHV4MuYO3XqpE6dOrkfx8fHKy8vT3/5y1/cwcTXbdaVqta4ePFiXXzxxbr55ps92i+EY+2r8/W5Jpj44IEHHjjnVRHt27fXtm3btH//fq91P/74o1earMinn36qnTt36o033jhn3169esnPz0+7du2qlT9W52vM5cLDw9WuXTvt2rVLkuRyuVRWVqaDBw96zJoUFBQoISGh0tv11fkY97Fjx3T77bcrNzdXq1ev9pgtqUhtH+uKtGrVSo0bN/b6P56CgoIzjs/lclXYv0mTJmrZsuVZ+/jyXqlNVRl3uTfeeEP33HOP3nzzTfXv3/+sfRs1aqQrrrjC/X6vS9UZ86n69Omj1157zf24Ph9rY4wWLlyoESNGyN/f/6x9bTrWVXE+P9ecY+KDVq1aqXPnzmddAgICFB8fr6KiIm3YsMH93M8++0xFRUWV+mO6YMECxcbGqkePHufsu337dh07dkzh4eHVGtuZnK8xlyssLFReXp57PLGxsfLz8/P4+mLfvn364osvajWY1Pa4y0PJrl279NFHH7k/2GdT28e6Iv7+/oqNjfX6+igzM/OM44uPj/fqv2rVKvXu3Vt+fn5n7VObx9QXVRm3dHKmZNSoUcrIyNCgQYPOuR9jjLZu3Xpej+mZVHXMp9uyZYvHeOrrsZZOXj77zTffVHgu4OlsOtZVcV4/1z6dKotKGzBggOnevbtZt26dWbdunenWrZvXJaSdOnUyy5Yt82grKioyQUFBZu7cuV7b/Oabb8zUqVNNTk6Oyc3NNStWrDCdO3c2PXv2tOLSWV/HXFJSYh5++GGTnZ1tcnNzzZo1a0x8fLy55JJLTHFxsfs5Y8aMMW3atDEfffSR2bx5s7nmmmusu1zYl3EfO3bM3HjjjaZNmzZm69atHpcSlpaWGmPsOtbll1IuWLDA7Nixw6SmppqmTZu6r0CYOHGiGTFihLt/+WWFDz74oNmxY4dZsGCB12WF//u//2saN25snnnmGfPll1+aZ555xtpLSCs77oyMDNOkSRPz4osvnvES77S0NLNy5Urz73//22zZssXcddddpkmTJuazzz477+OriK9jfv75583y5cvN119/bb744gszceJEI8m89dZb7j718ViXGz58uImLi6twm7Yf65KSErNlyxazZcsWI8nMnDnTbNmyxX1lYF1+rgkmtaSwsNAMGzbMBAcHm+DgYDNs2DCvS+okmUWLFnm0vfzyyyYwMLDC+1Xs3bvXXHXVVaZFixbG39/fdOjQwfzpT3/yuu9HXfF1zEeOHDEpKSkmNDTU+Pn5mbZt25qRI0eavXv3ejzn6NGj5oEHHjAtWrQwgYGB5vrrr/fqU5d8HXdubq6RVOGyZs0aY4x9x/rFF1807dq1M/7+/qZXr14mKyvLvW7kyJEmMTHRo//atWtNz549jb+/v2nfvn2FQfvNN980nTp1Mn5+fqZz584ef8xs4cu4ExMTKzymI0eOdPdJTU01bdu2Nf7+/iY0NNSkpKSY7Ozs8ziic/NlzNOnTzcdOnQwAQEBpnnz5ua3v/2tWbFihdc269uxNubkrQwCAwPNvHnzKtye7ce6/FLvM71f6/Jz7TDm/5+9AgAAUMc4xwQAAFiDYAIAAKxBMAEAANYgmAAAAGsQTAAAgDUIJgAAwBoEEwAAYA2CCQAAsAbBBAAAWINgAgAArEEwAQAA1vh/CXwo6UCGgN4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(cond_vals[:,0], 100);\n",
    "plt.title(\"Neuron 0 Distribution\")\n",
    "plt.figure()\n",
    "plt.hist(cond_vals[:,10], 100);\n",
    "plt.title(\"Neuron 10 Distribution\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We have identified that some of the neurons are not learning important features, while others are. Can we now understand what each of these important neurons are looking at in the input? For instance, are they identifying different features in the input or similar ones?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To answer these questions, we can apply the third type of attributions available in Captum, **Neuron Attributions**. This allows us to understand what parts of the input contribute to activating a particular input neuron. For this example, we will apply Neuron Conductance, which divides the neuron's total conductance value into the contribution from each individual input feature."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To use Neuron Conductance, we create a NeuronConductance object, analogously to Conductance, passing in the model as well as the module (layer) whose output we would like to understand, in this case, net.sigmoid1, as before."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "neuron_cond = NeuronConductance(net, net.sigmoid1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now obtain the neuron conductance values for all the test examples by calling attribute on the NeuronConductance object. Neuron Conductance requires the neuron index in the target layer for which attributions are requested as well as the target index for networks with mutliple outputs, similar to layer conductance. As before, we provide target=1, corresponding to survival, and compute neuron conductance for neurons 0 and 10, the significant neurons identified above. The neuron index can be provided either as a tuple or as just an integer if the layer output is 1-dimensional."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "neuron_cond_vals_10 = neuron_cond.attribute(test_input_tensor, neuron_selector=10, target=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "neuron_cond_vals_0 = neuron_cond.attribute(test_input_tensor, neuron_selector=0, target=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average Feature Importances for Neuron 0\n",
      "age :  -0.128\n",
      "sibsp :  -0.004\n",
      "parch :  0.003\n",
      "fare :  0.003\n",
      "female :  0.000\n",
      "male :  0.001\n",
      "embark_C :  0.006\n",
      "embark_Q :  -0.000\n",
      "embark_S :  -0.004\n",
      "class_1 :  0.002\n",
      "class_2 :  0.007\n",
      "class_3 :  -0.019\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+oAAAIhCAYAAADZxkARAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABYZElEQVR4nO3deXxM9/7H8fcgmSSSjCWyaEOCSmLfikRbtBXU2lYVV4qqal1V3F5LN1pqK6qtqstVumhpLb1Km9KF216JpaTWRquUW4JaErUEyff3R3+Za2QPkxz1ej4e82DOfL/nfL7fmTnJO+fMGZsxxggAAAAAAFhCqZIuAAAAAAAA/A9BHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQBK0GuvvSabzaY6deqUdCmW06pVK9lsthxvO3bscMs233//fc2YMcMt675aY8eOlc1m02+//VbSpRTZrFmztGDBgpIuo1jt379fHTp0UIUKFWSz2TR06FC3bi8sLEw2m02PPfZYtsfWrl0rm82mJUuWuLUGK7h48aJeeOEFhYWFyW63KzIyUq+//npJlwUABVampAsAgBvZW2+9JUnauXOnNmzYoGbNmpVwRdZSrVo1LVy4MNvy6tWru2V777//vnbs2OH2MHWjmjVrlgICAtS3b9+SLqXYDBs2TBs2bNBbb72l4OBghYSEFMt2582bp2HDhikiIqJYtmc1gwYN0rvvvqtx48bp1ltv1eeff64nn3xSp0+f1tNPP13S5QFAvgjqAFBCNm/erO+//14dOnTQqlWrNG/evGIP6sYYnT9/Xt7e3sW63YLy9vZW8+bNS7qMq3b27Fn5+PiUdBkl5kYe/44dO9S0aVN17dr1mqwvIyNDly5dkt1uz7VNdHS0du3apaefflpLly69Jtu9WsX5Gti5c6fmzZunl156SX//+98l/XGGzvHjxzV+/Hg99thjqlChQrHUAgBFxanvAFBC5s2bJ0maNGmSYmJitGjRIp09e1bSH6dtBgYGKi4uLlu/U6dOydvbW8OHD3cuS0tL01NPPaXw8HB5enrqpptu0tChQ3XmzBmXvjabTYMHD9bs2bMVFRUlu92ut99+W5L0wgsvqFmzZqpQoYL8/f3VqFEjzZs3T8YYl3Wkp6frb3/7m4KDg+Xj46M77rhD3333ncLCwrIdKU1JSdHAgQN18803y9PTU+Hh4XrhhRd06dKlq56/woz7jTfe0B133KHAwECVLVtWdevW1ZQpU3Tx4kVnm1atWmnVqlX65ZdfXE6zl/53yvDatWtd1rt//37ZbDaX07n79u0rX19fbd++XbGxsfLz89Ndd90lSbpw4YLGjx+vyMhI2e12VapUSf369dOxY8eKNP5WrVqpTp06SkhIUExMjLy9vRUWFqb58+dLklatWqVGjRrJx8dHdevWVXx8vEv/rNPpt27dqvvuu0/+/v5yOBzq3bt3tpoyMzM1ZcoUZ+2BgYF66KGH9N///jfHmv79738rJiZGPj4+evjhhxUWFqadO3dq3bp1zrkNCwuTJJ0/f15/+9vf1KBBAzkcDlWoUEHR0dH617/+lW3MWa/hd999V1FRUfLx8VH9+vW1cuXKbG1/+OEH9ezZU0FBQbLb7apSpYoeeughpaenO9sU9DX65ptvqn79+vL19ZWfn58iIyPzPDKb9Zr56aef9NlnnznHvH//fknSgQMH1Lt3bwUGBsputysqKkrTpk1TZmamcx1Zr68pU6Zo/PjxCg8Pl91u19dff53rdiWpQoUKGjVqlJYtW6bExMQ820rSjz/+qF69ernU8sYbb7i0WbBggUv9V47z8vdGbq+Bwo576tSpmj59usLDw+Xr66vo6OgCjefjjz+WMUb9+vVzWd6vXz+dO3cu2/sAAKyII+oAUALOnTunDz74QLfeeqvq1Kmjhx9+WI888og++ugj9enTRx4eHurdu7dmz56tN954Q/7+/s6+H3zwgc6fP+/8JfTs2bNq2bKl/vvf/+rpp59WvXr1tHPnTj3//PPavn27vvjiC2fglP74Jfabb77R888/r+DgYAUGBkr645fjgQMHqkqVKpKkxMREPfHEE/r111/1/PPPO/v369dPixcv1ogRI3TnnXdq165duvfee5WWluYyxpSUFDVt2lSlSpXS888/r+rVqyshIUHjx4/X/v37nWEyP1cGplKlSqlUqVKFGvfevXvVq1cvZ6D//vvv9dJLL+mHH35wfvxg1qxZevTRR7V3714tX768QLXl5sKFC+rcubMGDhyoUaNG6dKlS8rMzFSXLl30zTffaMSIEYqJidEvv/yiMWPGqFWrVtq8eXORzmxISUlRv379NGLECN188816/fXX9fDDD+vgwYNasmSJnn76aTkcDr344ovq2rWrfv75Z1WuXNllHffee6+6d++uxx57TDt37tRzzz2nXbt2acOGDfLw8JAkPf7445ozZ44GDx6sjh07av/+/Xruuee0du1abdmyRQEBAc71HT58WL1799aIESM0YcIElSpVSiNHjlS3bt3kcDg0a9YsSXIeFU5PT9eJEyf01FNP6aabbtKFCxf0xRdf6L777tP8+fP10EMPudS7atUqbdq0SS+++KJ8fX01ZcoU3XvvvUpOTla1atUkSd9//71uu+02BQQE6MUXX9Qtt9yiw4cPa8WKFbpw4YLsdnuBX6OLFi3SoEGD9MQTT2jq1KkqVaqUfvrpJ+3atSvX56VRo0ZKSEjQvffeq+rVq2vq1KmSpJCQEB07dkwxMTG6cOGCxo0bp7CwMK1cuVJPPfWU9u7d65yfLK+99ppq1qypqVOnyt/fX7fccku+r4snn3xSM2fO1IgRI/Tvf/8713a7du1STEyMqlSpomnTpik4OFiff/65hgwZot9++01jxozJd1s5yek1UNhxv/HGG4qMjHReN+K5557TPffco3379snhcOS67R07dqhSpUoKDg52WV6vXj3n4wBgeQYAUOzeeecdI8nMnj3bGGPM6dOnja+vr7n99tudbbZt22YkmTlz5rj0bdq0qWncuLHz/sSJE02pUqXMpk2bXNotWbLESDKffvqpc5kk43A4zIkTJ/KsLyMjw1y8eNG8+OKLpmLFiiYzM9MYY8zOnTuNJDNy5EiX9h988IGRZPr06eNcNnDgQOPr62t++eUXl7ZTp041kszOnTvzrKFly5ZGUrbbX/7yl0KPO6exvfPOO6Z06dIuc9GhQwdTtWrVbH2+/vprI8l8/fXXLsv37dtnJJn58+c7l/Xp08dIMm+99ZZL26w5Wrp0qcvyTZs2GUlm1qxZec7HmDFjjCRz7Ngx57KsOdq8ebNz2fHjx03p0qWNt7e3+fXXX53Lk5KSjCTz2muvZVvnsGHDXLa1cOFCI8m89957xhhjdu/ebSSZQYMGubTbsGGDkWSefvrpbDV9+eWX2cZQu3Zt07JlyzzHaYwxly5dMhcvXjT9+/c3DRs2dHlMkgkKCjJpaWnOZSkpKaZUqVJm4sSJzmV33nmnKVeunDl69Giu2ynoa3Tw4MGmXLly+dadk6pVq5oOHTq4LBs1apSRZDZs2OCy/PHHHzc2m80kJycbY/73+qpevbq5cOFCobc3d+5cI8l88sknxpj/vY4/+ugjZ/u2bduam2++2aSmprqsZ/DgwcbLy8v5/pg/f76RZPbt2+fSLqf3Rm6vgcKOu27duubSpUvOdhs3bjSSzAcffJDnHLRp08ZERETk+Jinp6d59NFH8+wPAFbAqe8AUALmzZsnb29v9ejRQ5Lk6+urBx54QN98841+/PFHSVLdunXVuHFjlyPPu3fv1saNG52nkUrSypUrVadOHTVo0ECXLl1y3tq2bZvj6dp33nmnypcvn62mr776SnfffbccDodKly4tDw8PPf/88zp+/LiOHj0qSVq3bp0kqXv37i59u3XrpjJlXE/SWrlypVq3bq3KlSu71NW+fXuXdeWlevXq2rRpk8tt3LhxhR731q1b1blzZ1WsWNE5toceekgZGRnas2dPvnUUxf333+9yf+XKlSpXrpw6derkUm+DBg0UHByc7XkqqJCQEDVu3Nh5v0KFCgoMDFSDBg1cjpxHRUVJkn755Zds6/jLX/7icr979+4qU6aM8xTrrH+v/GhD06ZNFRUVpS+//NJlefny5XXnnXcWahwfffSRWrRoIV9fX5UpU0YeHh6aN2+edu/ena1t69at5efn57wfFBSkwMBA59jOnj2rdevWqXv37qpUqVKu2yzoa7Rp06Y6deqUevbsqX/9619XfeX9r776SrVq1VLTpk1dlvft21fGGH311Vcuyzt37uw8s6Ew+vXrp1q1amnUqFEup5ZnOX/+vL788kvde++98vHxcZmDe+65R+fPny/QqeY5yek1UNhxd+jQQaVLl3bezzointNr+EqXn0VUmMcAwCoI6gBQzH766Sf9+9//VocOHWSM0alTp3Tq1Cl169ZN0v+uBC9JDz/8sBISEvTDDz9IkubPny+73a6ePXs62xw5ckTbtm2Th4eHy83Pz0/GmGyhIqerTm/cuFGxsbGSpLlz5+o///mPNm3apGeeeUbSH6fqS9Lx48cl/RGMLlemTBlVrFjRZdmRI0f0ySefZKurdu3aklSgsOPl5aUmTZq43MLDwws17gMHDuj222/Xr7/+qldffVXffPONNm3a5PwMbtbYriUfHx+Xjytk1Xvq1Cl5enpmqzklJaXI4S+ni2J5enpmW+7p6Snpj3B2pStPEc56PrOe76x/c3rtVK5c2fl4lsJe2XzZsmXq3r27brrpJr333ntKSEjQpk2b9PDDD+dY75WvNemP0+iznsuTJ08qIyNDN998c57bLehrNC4uTm+99ZZ++eUX3X///QoMDFSzZs20Zs2aQo0zy/Hjx3Ody6zHL1fUK8WXLl1aEyZM0M6dO53XoriyjkuXLun111/PNgf33HOPpIK9T3OSU82FHfeVz3PWRyXye89e/tq93JkzZ3ThwgUuJAfgusBn1AGgmL311lsyxmjJkiU5fp/x22+/rfHjx6t06dLq2bOnhg8frgULFuill17Su+++q65du7ocEQ8ICJC3t7dLwL/c5Z8dlnI+mrRo0SJ5eHho5cqV8vLyci7/+OOPXdpl/eJ85MgR3XTTTc7lly5dyvaLcUBAgOrVq6eXXnopx7qu/Jx0YRV03B9//LHOnDmjZcuWqWrVqs7Hk5KSCrytrDm5/CJkUu4hJqc5DggIUMWKFXO9kNXlR4iLW0pKSo7PZ9bznfXv4cOHs4XfQ4cOFeg1lpf33ntP4eHhWrx4sUvfK+e7oCpUqKDSpUtnu9DdlQrzGu3Xr5/69eunM2fO6N///rfGjBmjjh07as+ePS6vq4KoWLGiDh8+nG35oUOHnHVd7mqOAHfp0kUtWrTQmDFjNGfOHJfHypcvr9KlSysuLk5//etfc+yf9Yexa/EeKOy4i6pu3bpatGiRUlJSXP4ItX37dklSnTp1rsl2AMCdCOoAUIwyMjL09ttvq3r16vrnP/+Z7fGVK1dq2rRp+uyzz9SxY0eVL19eXbt21TvvvKPo6GilpKS4nPYuSR07dtSECRNUsWJF5y/VhWWz2VSmTBmX00zPnTund99916XdHXfcIUlavHixGjVq5Fy+ZMmSbBd969ixoz799FNVr149x1Ptr1ZBx50VGC7/OitjjObOnZut7eVHZS+XdXXybdu2qW3bts7lK1asKFS9ixYtUkZGRrF/DV9+Fi5c6HL6/IcffqhLly6pVatWkuQ8hfm9997Trbfe6my3adMm7d6923nmRX5ym1+bzSZPT0+XcJeSkpLjVd8LwtvbWy1bttRHH32kl156KdcAWJTXaNmyZdW+fXtduHBBXbt21c6dOwsd1O+66y5NnDhRW7ZscXkfvfPOO7LZbGrdunWh1pefyZMn67bbbtNrr73mstzHx0etW7fW1q1bVa9ePedZFzm5/D1w+XezF+Y9UFzj7tKli5599lm9/fbbGjlypHP5ggUL5O3trXbt2l2T7QCAOxHUAaAYffbZZzp06JAmT57sDEGXq1OnjmbOnKl58+apY8eOkv44/X3x4sUaPHiwbr75Zt19990ufYYOHaqlS5fqjjvu0LBhw1SvXj1lZmbqwIEDWr16tf72t7/lGww7dOig6dOnq1evXnr00Ud1/PhxTZ06Ndt3NdeuXVs9e/bUtGnTVLp0ad15553auXOnpk2bJofDoVKl/veJqhdffFFr1qxRTEyMhgwZooiICJ0/f1779+/Xp59+qtmzZ+d7anJeCjruNm3ayNPTUz179tSIESN0/vx5vfnmmzp58mS2ddatW1fLli3Tm2++qcaNG6tUqVJq0qSJgoODdffdd2vixIkqX768qlatqi+//FLLli0rcL09evTQwoULdc899+jJJ59U06ZN5eHhof/+97/6+uuv1aVLF917771Fno+rsWzZMpUpU0Zt2rRxXvW9fv36zmsRRERE6NFHH9Xrr7+uUqVKqX379s6rvoeGhmrYsGEF2k7Wkc7FixerWrVq8vLyUt26ddWxY0ctW7ZMgwYNUrdu3XTw4EGNGzdOISEhzms2FNb06dN12223qVmzZho1apRq1KihI0eOaMWKFfrHP/4hPz+/Ar9GBwwYIG9vb7Vo0UIhISFKSUnRxIkT5XA4XP5wUVDDhg3TO++8ow4dOujFF19U1apVtWrVKs2aNUuPP/64atasWaQx56ZFixbq0qVLjn/4ePXVV3Xbbbfp9ttv1+OPP66wsDCdPn1aP/30kz755BPn58ZvvfVWRURE6KmnntKlS5dUvnx5LV++XN9++22B6yiucdeuXVv9+/fXmDFjVLp0ad16661avXq15syZo/Hjx3PqO4DrQwleyA4Abjhdu3Y1np6eeV6JukePHqZMmTImJSXFGPPHVcpDQ0ONJPPMM8/k2Of33383zz77rImIiDCenp7G4XCYunXrmmHDhjnXY8wfV8z+61//muM63nrrLRMREWHsdrupVq2amThxopk3b162Kz2fP3/eDB8+3AQGBhovLy/TvHlzk5CQYBwOR7arhx87dswMGTLEhIeHGw8PD1OhQgXTuHFj88wzz5jff/89z7lq2bKlqV27dp5t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DBigxMREJSYmasCAAerYsaMiIiKc7SIjI7V8+XJJf5zyPnToUE2YMEHLly/Xjh071LdvX/n4+KhXr17O9jVq1NDAgQO1ceNG7d27V9OmTdOaNWvUtWtXdwwFAAAAAIBiVagj6oWxcOFCDRkyxHkV986dO2vmzJkubZKTk5Wamuq8P2LECJ07d06DBg3SyZMn1axZM61evVp+fn6SJA8PD3366acaNWqUOnXqpN9//101atTQ22+/rXvuucddQwEAAAAAoNjYjDGmpIsobmlpaXI4HEpNTZW/v39Jl5OvsFGrSroEt9s/qUNJlwAAAAAAblOYHOqWU98BAAAAAEDRENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAshKAOAAAAAICFENQBAAAAALAQgjoAAAAAABbitqB+8uRJxcXFyeFwyOFwKC4uTqdOncqzz7Jly9S2bVsFBATIZrMpKSkpW5v09HQ98cQTCggIUNmyZdW5c2f997//dc8gAAAAAAAoZm4L6r169VJSUpLi4+MVHx+vpKQkxcXF5dnnzJkzatGihSZNmpRrm6FDh2r58uVatGiRvv32W/3+++/q2LGjMjIyrvUQAAAAAAAodmXcsdLdu3crPj5eiYmJatasmSRp7ty5io6OVnJysiIiInLslxXk9+/fn+Pjqampmjdvnt59913dfffdkqT3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w4YNNXny5JIuy63Onz+vvn37qm7duipTpsyf8o+LRbV27Vp16dJFISEhKlu2rBo0aKCFCxeWdFmWkZycrNatWysoKEheXl6qVq2ann32WV28eLGkSysWZUq6AMAqHA5HSZfwp2GMUUZGhsqU+XPvYvbu3auQkBDFxMQUeR0XL16Uh4fHNazKva7FmIGSkLVfulpxcXFatmyZnn32Wc2cOVOVKlXS999/rxkzZigsLOy6DCHXYm6MMerRo4e++OILvfzyy7rrrruUlpamN954Q61atdJHH310Xc5NlmsxR/PmzdPw4cP12muvqWXLlkpPT9e2bdu0a9eua1SlNWVkZMjb21tDhgzR0qVLS7ocS1m/fr3q1aunkSNHKigoSKtWrdJDDz0kf39/derUqaTLK3EeHh566KGH1KhRI5UrV07ff/+9BgwYoMzMTE2YMKGky3M7jqjfIOLj43XbbbepXLlyqlixojp27Ki9e/c6H1+/fr0aNGggLy8vNWnSRB9//HG2U1527dqle+65R76+vgoKClJcXJx+++23EhjN1VmyZInq1q0rb29vVaxYUXfffbfOnDmT4ymkly5d0uDBg53z9uyzz+rybzScNWuWbrnlFnl5eSkoKEjdunVzPtaqVSsNHjw4z/5WkV+t7733npo0aSI/Pz8FBwerV69eOnr0qLP/2rVrZbPZ9Pnnn6tJkyay2+365ptvlJmZqcmTJ6tGjRqy2+2qUqWKXnrpJZdt//zzz2rdurV8fHxUv359JSQkFOvYi6pv37564okndODAAdlsNoWFheX7Pss6lezDDz9Uq1at5OXlpffee0+SNH/+fEVFRcnLy0uRkZGaNWtWSQ0tVzmN2RijKVOmqFq1avL29lb9+vW1ZMkSZ5/LXxsNGzaUt7e37rzzTh09elSfffaZoqKi5O/vr549e7ocjcxvLnNi9X1Uq1at9MQTT2jo0KEqX768goKCNGfOHJ05c0b9+vWTn5+fqlevrs8++0zSH7/c9u/fX+Hh4fL29lZERIReffXVPLeR3/PhDnlts6jPv5T//reo+6Ur7du3TzVq1NDjjz+uzMzMPMf64YcfauHChfrggw/09NNP69Zbb1VYWJi6dOmir776Sq1bt76h52bJkiV655139Mgjjyg8PFz169fXnDlz1LlzZz3yyCM6c+ZMtn430hx98skn6t69u/r3768aNWqodu3a6tmzp8aNG5dnv/wU5GetVLB9ytq1a9W0aVPnEf8WLVrol19+kSR9//33at26tfz8/OTv76/GjRtr8+bN+dZXtmxZvfnmmxowYICCg4OvaqyFZfW5efrppzVu3DjFxMSoevXqGjJkiNq1a6fly5dfmwnIh9Xnp1q1aurXr5/q16+vqlWrqnPnzvrLX/6S43vxT8nghrBkyRKzdOlSs2fPHrN161bTqVMnU7duXZORkWHS0tJMhQoVTO/evc3OnTvNp59+amrWrGkkma1btxpjjDl06JAJCAgwo0ePNrt37zZbtmwxbdq0Ma1bty7ZgRXSoUOHTJkyZcz06dPNvn37zLZt28wbb7xhTp8+bfr06WO6dOnibNuyZUvj6+trnnzySfPDDz+Y9957z/j4+Jg5c+YYY4zZtGmTKV26tHn//ffN/v37zZYtW8yrr75a4P5Wkl+t8+bNM59++qnZu3evSUhIMM2bNzft27d39v/666+NJFOvXj2zevVq89NPP5nffvvNjBgxwpQvX94sWLDA/PTTT+abb74xc+fONcYYs2/fPiPJREZGmpUrV5rk5GTTrVs3U7VqVXPx4sUSmYfCOHXqlHnxxRfNzTffbA4fPmyOHj2a5/vMmP+NOSwszCxdutT8/PPP5tdffzVz5swxISEhzmVLly41FSpUMAsWLCjhUbrKacxPP/20iYyMNPHx8Wbv3r1m/vz5xm63m7Vr1xpj/vfaaN68ufn222/Nli1bTI0aNUzLli1NbGys2bJli/n3v/9tKlasaCZNmuTcVkHn8nraR7Vs2dL4+fmZcePGmT179phx48aZUqVKmfbt25s5c+aYPXv2mMcff9xUrFjRnDlzxly4cME8//zzZuPGjebnn392vi8XL17sXOeV+638ng93yGubRX3+C7L/LOp+acyYMaZ+/frGGGO2b99uQkJCzKhRowo01s6dO5uIiAjmJpe5qVmzZo6P/ec//zGSzPLly2/oORo4cKCJjIw0+/fvL1D7gsrtZ+2V+8n89ikXL140DofDPPXUU+ann34yu3btMgsWLDC//PKLMcaY2rVrm969e5vdu3ebPXv2mA8//NAkJSUVqtYr91nudj3NTZYWLVqYv/3tb9dk/Pm53ubnxx9/NFFRUeaZZ565ZnNgZQT1G9TRo0eNJLN9+3bz5ptvmooVK5pz5845H587d67LG/S5554zsbGxLus4ePCgkWSSk5OLs/Sr8t133xlJOf6QzCmoR0VFmczMTOeykSNHmqioKGOMMUuXLjX+/v4mLS0tx23l199KClvrxo0bjSRz+vRpY8z/fqH5+OOPnW3S0tKM3W53BvMrZf0Q+Oc//+lctnPnTiPJ7N69+1oMy+1eeeUVU7Vq1Vwfv/x9Zsz/xjxjxgyXdqGhoeb99993WTZu3DgTHR19zWu+WpeP+ffffzdeXl5m/fr1Lm369+9vevbsaYz532vjiy++cD4+ceJEI8ns3bvXuWzgwIGmbdu2uW43t7m8nvZRLVu2NLfddpvz/qVLl0zZsmVNXFycc9nhw4eNJJOQkJDjOgYNGmTuv/9+5/3L91sFeT6utfy2WdTnvyj7z4Lsl4wxzqC1fv16U6FCBfPyyy8XeLxRUVGmc+fOBWp7o81NZGRkrgHsxIkTRpKZPHmyy/IbbY4OHTpkmjdvbiSZmjVrmj59+pjFixc7/wBZFHn9rL1yP5mTy/cpx48fN5Jy/cOen5/fVf8BuTiD+vU2N8YY89FHHxlPT0+zY8eOq15Xfq6n+YmOjjZ2u91IMo8++uhVvWeuJ5z6foPYu3evevXqpWrVqsnf31/h4eGSpAMHDig5Odl54ZcsTZs2den/3Xff6euvv5avr6/zFhkZ6Vz39aJ+/fq66667VLduXT3wwAOaO3euTp48mWv75s2by2azOe9HR0frxx9/VEZGhtq0aaOqVauqWrVqiouL08KFC7OdepdXf6vJq9atW7eqS5cuqlq1qvz8/NSqVStJf7x+LtekSRPn/3fv3q309HTdddddeW63Xr16zv+HhIRIksvph9eTvN5nl7t8no4dO6aDBw+qf//+Lu+v8ePHW/69tWvXLp0/f15t2rRxqf2dd97JVvvlz3NQUJB8fHxUrVo1l2WXP+8Fncss18s+6vJ5KF26tCpWrKi6des6lwUFBUn633tg9uzZatKkiSpVqiRfX1/NnTs31zkozPNxrRR0m4V9/qX8959F2S9lOXDggO6++249++yzeuqppwo8XmOMS015udHmpiA8PT1d7t9ocxQSEqKEhARt375dQ4YM0cWLF9WnTx+1a9cu39Pmc1PQn7VZ8tqnVKhQQX379lXbtm3VqVMnvfrqqzp8+LCz7/Dhw/XII4/o7rvv1qRJkyy1b83J9TY3a9euVd++fTV37lzVrl270P0L63qan8WLF2vLli16//33tWrVKk2dOrVQ/a9XBPUbRKdOnXT8+HHNnTtXGzZs0IYNGyRJFy5cyPEXD3PF56gzMzPVqVMnJSUludx+/PFH3XHHHcU2jqtVunRprVmzRp999plq1aql119/XREREdq3b1+h1+Xn56ctW7bogw8+UEhIiJ5//nnVr19fp06duvaFl6Dz588rNjZWvr6+eu+997Rp0ybnZ6cuXLjg0rZs2bLO/3t7exdo/ZdfSC3rdVjUX1hKWl7vs8tdPk9ZY507d67Le2vHjh1KTEwsvuKLIKv2VatWudS+a9eubJ+LvvJ5vvICejabzeV5L+hcXl7L9bCPymncub0HPvzwQw0bNkwPP/ywVq9eraSkJPXr1y/POZAK9nxcKwXdZmGf//ycOXOmSPulLJUqVVLTpk21aNEipaWlFXi7NWvW1O7duwvU9kabm1tuuSXXi6JlzVnNmjVdlt9oc5SlTp06+utf/6qFCxdqzZo1WrNmjdatW1fo9UgF/1krqUD7lPnz5yshIUExMTFavHixatas6fxZNHbsWO3cuVMdOnTQV199pVq1ahXbZ6mL4nqam3Xr1qlTp06aPn26HnrooYIP8ipcT/MTGhqqWrVqqWfPnpo0aZLGjh1ryYNe1xpB/QZw/Phx7d69W88++6zuuusuRUVFuRxFjoyM1LZt25Senu5cduUFHho1aqSdO3cqLCxMNWrUcLnl9EPMymw2m1q0aKEXXnhBW7dulaenZ647iyuDUmJiom655RaVLl1aklSmTBndfffdmjJlirZt26b9+/frq6++KnB/K8mt1h9++EG//fabJk2apNtvv12RkZEFOuJ9yy23yNvbW19++aW7SraU/N5nuQkKCtJNN92kn3/+Odt7K+soslXVqlVLdrtdBw4cyFZ7aGhokddblLn8M+2jsnzzzTeKiYnRoEGD1LBhQ9WoUSPPoxDuej7y4s5t5rX/LOp+KYu3t7dWrlwpLy8vtW3bVqdPny5Qv169emnPnj3617/+le0xY4xSU1Od92+0uenZs6d+/PFHffLJJ9kemzZtmipXrqw2bdq4LL/R5igntWrVkqQcL7RXEIX5WVvQfUrDhg01evRorV+/XnXq1NH777/vfKxmzZoaNmyYVq9erfvuu0/z588v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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_importances(feature_names, neuron_cond_vals_0.mean(dim=0).detach().numpy(), title=\"Average Feature Importances for Neuron 0\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the data above, it appears that the primary input feature used by neuron 0 is age, with limited importance for all other features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average Feature Importances for Neuron 10\n",
      "age :  -0.012\n",
      "sibsp :  0.003\n",
      "parch :  0.000\n",
      "fare :  -0.015\n",
      "female :  0.055\n",
      "male :  -0.210\n",
      "embark_C :  0.016\n",
      "embark_Q :  -0.006\n",
      "embark_S :  -0.052\n",
      "class_1 :  0.022\n",
      "class_2 :  0.009\n",
      "class_3 :  -0.116\n"
     ]
    },
    {
     "data": {
      "image/png": "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GzbU77//rvfee0/r16/X5s2bHZ/BTe3breTj4+P0cYXUes+dOycPD480NcfHx99w+CtSpEiaZR4eHmmWp858nZSUlKZ9YGCg0/3U5zP1+U79N73XTsmSJR2Pp0qvXWYWL16sdu3a6Z577tGcOXMUHR2tzZs369lnn0233utfa9I/l9GnPpdnz55VSkqKSpUqlel+s/sajYqK0ieffKKjR4/qySefVPHixVW3bl2tXLkyR/1MdebMmQzHMvXxa+V0PFO5ubnp7bff1u7dux1zUVxfx5UrV/T++++nGYNHHnlEUvbep+lJr+ac9vv65zn1oxK36j1buHBh2Wy2NPuVpD///FNS+u8vAMgrfEYdAFzok08+kTFGCxcuTPf7jD/99FO9+eabcnNzU4cOHdS/f3/NmjVLb731lj777DO1adPG6Yy4v7+/vL29nQL+ta797LCU/hmiefPmyd3dXUuXLpWXl5dj+VdffeXULvUX55MnT+qee+5xLL9y5UqaX3b9/f1VtWpVvfXWW+nWdf3npHMqu/3+6quvdPHiRS1evNhpwqiYmJhs7yt1TK6dhEzKOMSkN8b+/v4qWrRomgndUl17hji3xcfHp/t8pj7fqf/GxcWlCb8nTpzI1mssM3PmzFFISIjmz5/vtO71451dRYoUkZubW5qJ7q6Xk9dot27d1K1bN128eFE//vijhg0bplatWmn//v1Or6vsKFq0qOLi4tIsP3HihKOua93MWd3HHntMDRo00LBhwzRt2jSnxwoXLiw3NzdFRUXpX//6V7rrp/5h7Fa8B3Lab1fz9vZW+fLl9csvv6R57JdffpG3t7djzgMAsAKCOgC4SEpKij799FOVK1dO//73v9M8vnTpUk2YMEHffvutWrVqpcKFC6tNmzaaPXu26tevr/j4eKfL3iWpVatWevvtt1W0aFHHL9U5ZbPZlD9/fqfLTP/+++80X2v0wAMPSJLmz5+vmjVrOpYvXLgwzaRvrVq10vLly1WuXLl0L7W/Wdntd2pguPbrrIwxmj59epq2156VvVbq7OQ7d+5U8+bNHcu//vrrHNU7b948paSk5PrX8GVl7ty5TpfPL1iwQFeuXFHjxo0lyXEJ85w5c3Tfffc52m3evFl79+51XHmRlYzG12azycPDwyncxcfHpzvre3Z4e3urUaNG+vLLL/XWW29lGABv5DVa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AICFENQBAAAAALAQgjoAAAAAABZCUAcAAAAAwEII6gAAAAAAWAhBHQAAAAAACyGoAwAAAABgIQR1AAAAAAAsJH9eFwAAsJ7gQcvyuoRcETumZV6XAAAAkAZn1AEAAAAAsBCCOgAAAAAAFkJQBwAAAADAQlwe1KdMmaKQkBB5eXmpVq1aWr9+fabt161bp1q1asnLy0tly5bV1KlTnR6fNWuWbDZbmltSUpIruwEAAAAAQK5waVCfP3+++vbtq9dee03bt29Xw4YN1aJFCx07dizd9keOHNEjjzyihg0bavv27RoyZIj69OmjRYsWObXz8/NTXFyc083Ly8uVXQEAAAAAIFe4dNb3iRMnqnv37nruueckSZMmTdJ3332njz76SKNHj07TfurUqSpdurQmTZokSQoLC9OWLVs0fvx4Pfnkk452NptNgYGBriwdAAAAAIA84bIz6pcvX9bWrVsVGRnptDwyMlIbNmxId53o6Og07Zs3b64tW7YoOTnZsezChQsqU6aMSpUqpVatWmn79u2Z1nLp0iUlJiY63QAAAAAAsCKXBfU//vhDKSkpCggIcFoeEBCg+Pj4dNeJj49Pt/2VK1f0xx9/SJJCQ0M1a9Ysff311/riiy/k5eWlBg0a6MCBAxnWMnr0aNntdsctKCjoJnsHAAAAAIBruHwyOZvN5nTfGJNmWVbtr11er149derUSdWqVVPDhg21YMECVahQQe+//36G2xw8eLASEhIct+PHj99odwAAAAAAcCmXfUbd399fbm5uac6enzp1Ks1Z81SBgYHpts+fP7+KFi2a7jr58uXTfffdl+kZdU9PT3l6euawBwAAAAAA5D6XnVH38PBQrVq1tHLlSqflK1euVERERLrr1K9fP03777//XrVr15a7u3u66xhjFBMToxIlStyawgEAAAAAyEMuvfS9f//++ve//61PPvlEe/fuVb9+/XTs2DH17NlT0j+XpHfu3NnRvmfPnjp69Kj69++vvXv36pNPPtGMGTM0YMAAR5sRI0bou+++0+HDhxUTE6Pu3bsrJibGsU0AAAAAAG5nLv16tqefflpnzpzRyJEjFRcXpypVqmj58uUqU6aMJCkuLs7pO9VDQkK0fPly9evXTx9++KFKliypyZMnO30127lz5/T8888rPj5edrtdNWrU0I8//qg6deq4sisAAAAAAOQK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2po0aZL++uuvvC4vT6WkpOjdd99V1apV5eXlpUKFCqlFixb673//m9elWcbHH3+satWqqUCBAipUqJBq1KihsWPH5nVZLpWUlKSuXbsqPDxc+fPnvyP/uHij1q5dq8cee0wlSpRQgQIFVL16dc2dOzevy7KMffv2qUmTJgoICJCXl5fKli2r119/XcnJyXldWq7In9cFAFZht9vzuoQ7hjFGKSkpyp//zj7EHDp0SCVKlFBERMQNbyM5OVnu7u63sCrXuhV9BvJC6nHpZkVFRWnx4sV6/fXX9cEHH6hYsWLasWOHJk2apODg4NsyhNyKsTHGqH379lq1apXeeecdPfTQQ0pMTNSHH36oxo0b68svv7wtxybVrRijGTNmqH///po8ebIaNWqkS5cuaefOndqzZ88tqtKaUlJS5O3trT59+mjRokV5XY6lbNiwQVWrVtWrr76qgIAALVu2TJ07d5afn58effTRvC4vz7m7u6tz586qWbOmChUqpB07dqhHjx66evWq3n777bwuz+U4o36XWLFihe6//34VKlRIRYsWVatWrXTo0CHH4xs2bFD16tXl5eWl2rVr66uvvkpzycuePXv0yCOPyNfXVwEBAYqKitIff/yRB725OQsXLlR4eLi8vb1VtGhRNW3aVBcvXkz3EtIrV66od+/ejnF7/fXXde03Gk6ZMkX33nuvvLy8FBAQoLZt2zoea9y4sXr37p3p+laRVa1z5sxR7dq1VbBgQQUGBqpjx446deqUY/21a9fKZrPpu+++U+3ateXp6an169fr6tWrGjt2rMqXLy9PT0+VLl1ab731ltO+Dx8+rCZNmsjHx0fVqlVTdHR0rvb9RnXt2lUvvfSSjh07JpvNpuDg4CzfZ6mXki1YsECNGzeWl5eX5syZI0maOXOmwsLC5OXlpdDQUE2ZMiWvupah9PpsjNG4ceNUtmxZeXt7q1q1alq4cKFjnWtfGzVq1JC3t7cefPBBnTp1St9++63CwsLk5+enDh06OJ2NzGos02P1Y1Tjxo310ksvqW/fvipcuLACAgI0bdo0Xbx4Ud26dVPBggVVrlw5ffvtt5L++eW2e/fuCgkJkbe3typWrKj33nsv031k9Xy4Qmb7vNHnX8r6+Hujx6XrHTlyROXLl9eLL76oq1evZtrXBQsWaO7cufriiy80ZMgQ3XfffQoODtZjjz2mH374QU2aNLmrx2bhwoWaPXu2nnvuOYWEhKhatWqaNm2aWrdureeee04XL15Ms97dNEbffPON2rVrp+7du6t8+fKqXLmyOnTooFGjRmW6Xlay87NWyt4xZe3atapTp47jjH+DBg109OhRSdKOHTvUpEkTFSxYUH5+fqpVq5a2bNmSZX0FChTQRx99pB49eigwMPCm+ppTVh+bIUOGaNSoUYqIiFC5cuXUp08fPfzww1qyZMmtGYAsWH18ypYtq27duqlatWoqU6aMWrdurWeeeSbd9+IdyeCusHDhQrNo0SKzf/9+s337dvPoo4+a8PBwk5KSYhITE02RIkVMp06dzO7du83y5ctNhQoVjCSzfft2Y4wxJ06cMP7+/mbw4MFm7969Ztu2baZZs2amSZMmeduxHDpx4oTJnz+/mThxojly5IjZuXOn+fDDD8358+dNly5dzGOPPeZo26hRI+Pr62tefvll8+uvv5o5c+YYHx8fM23aNGOMMZs3bzZubm7m888/N7GxsWbbtm3mvffey/b6VpJVrTNmzDDLly83hw4dMtHR0aZevXqmRYsWjvXXrFljJJmqVaua77//3hw8eND88ccfZuDAgaZw4cJm1qxZ5uDBg2b9+vVm+vTpxhhjjhw5YiSZ0NBQs3TpUrNv3z7Ttm1bU6ZMGZOcnJwn45AT586dMyNHjjSlSpUycXFx5tSpU5m+z4z5X5+Dg4PNokWLzOHDh83vv/9upk2bZkqUKOFYtmjRIlOkSBEza9asPO6ls/T6PGTIEBMaGmpWrFhhDh06ZGbOnGk8PT3N2rVrjTH/e23Uq1fP/PTTT2bbtm2mfPnyplGjRiYyMtJs27bN/Pjjj6Zo0aJmzJgxjn1ldyxvp2NUo0aNTMGCBc2oUaPM/v37zahRo0y+fPlMixYtzLRp08z+/fvNiy++aIoWLWouXrxoLl++bIYOHWp+/vlnc/jwYcf7cv78+Y5tXn/cyur5cIXM9nmjz392jp83elwaNmyYqVatmjHGmF9++cWUKFHCDBo0KFt9bd26talYsSJjk8HYVKhQId3H/vvf/xpJZsmSJXf1GL3wwgsmNDTUxMbGZqt9dmX0s/b642RWx5Tk5GRjt9vNgAEDzMGDB82ePXvMrFmzzNGjR40xxlSuXNl06tTJ7N271+zfv98sWLDAxMTE5KjW649ZrnY7jU2qBg0amFdeeeWW9D8rt9v4HDhwwISFhZnXXnvtlo2BlRHU71KnTp0ykswvv/xiPvroI1O0aFHz999/Ox6fPn260xv0jTfeMJGRkU7bOH78uJFk9u3bl5ul35StW7caSen+kEwvqIeFhZmrV686lr366qsmLCzMGGPMokWLjJ+fn0lMTEx3X1mtbyU5rfXnn382ksz58+eNMf/7hearr75ytElMTDSenp6OYH691B8C//73vx3Ldu/ebSSZvXv33opuudy7775rypQpk+Hj177PjPlfnydNmuTULigoyHz++edOy0aNGmXq169/y2u+Wdf2+cKFC8bLy8ts2LDBqU337t1Nhw4djDH/e22sWrXK8fjo0aONJHPo0CHHshdeeME0b948w/1mNJa30zGqUaNG5v7773fcv3LliilQoICJiopyLIuLizOSTHR0dLrb6NWrl3nyyScd9689bmXn+bjVstrnjT7/N3L8zM5xyRjjCFobNmwwRYoUMe+88062+xsWFmZat26drbZ329iEhoZmGMD+/PNPI8mMHTvWafndNkYnTpww9erVM5JMhQoVTJcuXcz8+fMdf4C8EZn9rL3+OJmea48pZ86cMZIy/MNewYIFb/oPyLkZ1G+3sTHGmC+//NJ4eHiYXbt23fS2snI7jU/9+vWNp6enkWSef/75m3rP3E649P0ucejQIXXs2FFly5aVn5+fQkJCJEnHjh3Tvn37HBO/pKpTp47T+lu3btWaNWvk6+vruIWGhjq2fbuoVq2aHnroIYWHh+upp57S9OnTdfbs2Qzb16tXTzabzXG/fv36OnDggFJSUtSsWTOVKVNGZcuWVVRUlObOnZvm0rvM1reazGrdvn27HnvsMZUpU0YFCxZU48aNJf3z+rlW7dq1Hf/fu3evLl26pIceeijT/VatWtXx/xIlSkiS0+WHt5PM3mfXunacTp8+rePHj6t79+5O768333zT8u+tPXv2KCkpSc2aNXOqffbs2Wlqv/Z5DggIkI+Pj8qWLeu07NrnPbtjmep2OUZdOw5ubm4qWrSowsPDHcsCAgIk/e89MHXqVNWuXVvFihWTr6+vpk+fnuEY5OT5uFWyu8+cPv9S1sfPGzkupTp27JiaNm2q119/XQMGDMh2f40xTjVl5m4bm+zw8PBwun+3jVGJEiUUHR2tX375RX369FFycrK6dOmihx9+OMvL5jOS3Z+1qTI7phQpUkRdu3ZV8+bN9eijj+q9995TXFycY93+/fvrueeeU9OmTTVmzBhLHVvTc7uNzdq1a9W1a1dNnz5dlStXzvH6OXU7jc/8+fO1bds2ff7551q2bJnGjx+fo/VvVwT1u8Sjjz6qM2fOaPr06dq0aZM2bdokSbp8+XK6v3iY6z5HffXqVT366KOKiYlxuh04cEAPPPBArvXjZrm5uWnlypX69ttvValSJb3//vuqWLGijhw5kuNtFSxYUNu2bdMXX3yhEiVKaOjQoapWrZrOnTt36wvPQ0lJSYqMjJSvr6/mzJmjzZs3Oz47dfnyZae2BQoUcPzf29s7W9u/diK11Nfhjf7Cktcye59d69pxSu3r9OnTnd5bu3bt0saNG3Ov+BuQWvuyZcucat+zZ0+az0Vf/zxfP4GezWZzet6zO5bX1nI7HKPS63dG74EFCxaoX79+evbZZ/X9998rJiZG3bp1y3QMpOw9H7dKdveZ0+c/KxcvXryh41KqYsWKqU6dOpo3b54SExOzvd8KFSpo79692Wp7t43Nvffem+GkaKljVqFCBafld9sYpapSpYr+9a9/ae7cuVq5cqVWrlypdevW5Xg7UvZ/1krK1jFl5syZio6OVkREhObPn68KFSo4fhYNHz5cu3fvVsuWLfXDDz+oUqVKufZZ6htxO43NunXr9Oijj2rixInq3Llz9jt5E26n8QkKClKlSpXUoUMHjRkzRsOHD7fkSa9bjaB+Fzhz5oz27t2r119/XQ899JDCwsKcziKHhoZq586dunTpkmPZ9RM81KxZU7t371ZwcLDKly/vdEvvh5iV2Ww2NWjQQCNGjND27dvl4eGR4cHi+qC0ceNG3XvvvXJzc5Mk5c+fX02bNtW4ceO0c+dOxcbG6ocffsj2+laSUa2//vqr/vjjD40ZM0YNGzZUaGhots5433vvvfL29tbq1atdVbKlZPU+y0hAQIDuueceHT58OM17K/UsslVVqlRJnp6eOnbsWJrag4KCbni7NzKWd9IxKtX69esVERGhXr16qUaNGipfvnymZyFc9XxkxpX7zOz4eaPHpVTe3t5aunSpvLy81Lx5c50/fz5b63Xs2FH79+/Xf/7znzSPGWOUkJDguH+3jU2HDh104MABffPNN2kemzBhgkqWLKlmzZo5Lb/bxig9lSpVkqR0J9rLjpz8rM3uMaVGjRoaPHiwNmzYoCpVqujzzz93PFahQgX169dP33//vZ544gnNnDnzhurODbfL2Kxdu1YtW7bUmDFj9Pzzz2e/gzfpdhmf6xljlJycbMnJmW+1O/u7kyBJKly4sIoWLapp06apRIkSOnbsmAYNGuR4vGPHjnrttdf0/PPPa9CgQTp27JjjkpLUszv/+te/NH36dHXo0EH/93//J39/fx08eFDz5s3T9OnTLRk807Np0yatXr1akZGRKl68uDZt2qTTp08rLCxMO3fuTNP++PHj6t+/v1544QVt27ZN77//viZMmCBJWrp0qQ4fPqwHHnhAhQsX1vLly3X16lVVrFgxW+tbTUa1li5dWh4eHnr//ffVs2dP7dq1K1sz1Hp5eenVV1/VwIED5eHhoQYNGuj06dPavXu3unfvngs9yl1Zvc8yM3z4cPXp00d+fn5q0aKFLl26pC1btujs2bPq37+/iyu/cQULFtSAAQPUr18/Xb16Vffff78SExO1YcMG+fr6qkuXLje03RsZyzvlGHWt8uXLa/bs2fruu+8UEhKizz77TJs3b87wDziuej4yk9U+y5Qpc8Pbzuz4eaPHpWsVKFBAy5YtU4sWLdSiRQutWLFCvr6+ma7Trl07LVmyRB06dNAbb7yhZs2aqVixYvrll1/07rvv6qWXXnJ8e8jdNjbt27fXggUL1KVLlzRfz7Z06VKtWLEizZnwu22MXnzxRZUsWVIPPvigSpUqpbi4OL355psqVqyY6tevf0P9zOxn7fWXNGd1TDly5Ihjlv6SJUtq37592r9/vzp37qy///5b//d//6e2bdsqJCREv/32mzZv3qwnn3wyW3Xu2bNHly9f1p9//qnz5887vlWoevXqN9Tv7LgdxiY1pL/88st68sknFR8fL+mfj4kUKVLk1g/KNW6H8Zk7d67c3d0VHh4uT09Pbd26VYMHD9bTTz99x38FsCRmfb9brFy50oSFhRlPT09TtWpVs3btWqcZWP/73/+aqlWrGg8PD1OrVi3z+eefG0nm119/dWxj//795vHHHzeFChUy3t7eJjQ01PTt29dpshar27Nnj2nevLkpVqyY8fT0NBUqVDDvv/++MSb9yeR69eplevbsafz8/EzhwoXNoEGDHP1dv369adSokSlcuLDx9vY2VatWdZqNOav1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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_importances(feature_names, neuron_cond_vals_10.mean(dim=0).detach().numpy(), title=\"Average Feature Importances for Neuron 10\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the visualization above, it is evident that neuron 10 primarily relies on the gender and class features, substantially different from the focus of neuron 0."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this demo, we have applied different attribution techniques in Captum including Integrated Gradients for feature attribution and Conductance for layer and neuron attribution in order to better understand the neural network predicting survival. Although larger networks are more difficult to analyze than this simple network, these basic building blocks for attribution can be utilized to improve model interpretability, breaking the traditional \"black-box\" characterization of neural networks and delving deeper into understanding how and why they make their decisions. "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
